puppet-parse 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. data/.travis.yml +0 -5
  2. data/README.md +1 -3
  3. data/lib/puppet-parse/version.rb +1 -1
  4. data/lib/puppet-parse.rb +2 -2
  5. data/lib/vendor/puppet/agent/locker.rb +46 -0
  6. data/lib/vendor/puppet/agent.rb +99 -0
  7. data/lib/vendor/puppet/application/agent.rb +489 -0
  8. data/lib/vendor/puppet/application/apply.rb +266 -0
  9. data/lib/vendor/puppet/application/ca.rb +5 -0
  10. data/lib/vendor/puppet/application/catalog.rb +4 -0
  11. data/lib/vendor/puppet/application/cert.rb +240 -0
  12. data/lib/vendor/puppet/application/certificate.rb +13 -0
  13. data/lib/vendor/puppet/application/certificate_request.rb +4 -0
  14. data/lib/vendor/puppet/application/certificate_revocation_list.rb +4 -0
  15. data/lib/vendor/puppet/application/config.rb +4 -0
  16. data/lib/vendor/puppet/application/describe.rb +256 -0
  17. data/lib/vendor/puppet/application/device.rb +242 -0
  18. data/lib/vendor/puppet/application/doc.rb +275 -0
  19. data/lib/vendor/puppet/application/face_base.rb +264 -0
  20. data/lib/vendor/puppet/application/facts.rb +4 -0
  21. data/lib/vendor/puppet/application/file.rb +4 -0
  22. data/lib/vendor/puppet/application/filebucket.rb +191 -0
  23. data/lib/vendor/puppet/application/help.rb +4 -0
  24. data/lib/vendor/puppet/application/indirection_base.rb +4 -0
  25. data/lib/vendor/puppet/application/inspect.rb +191 -0
  26. data/lib/vendor/puppet/application/instrumentation_data.rb +4 -0
  27. data/lib/vendor/puppet/application/instrumentation_listener.rb +4 -0
  28. data/lib/vendor/puppet/application/instrumentation_probe.rb +4 -0
  29. data/lib/vendor/puppet/application/key.rb +4 -0
  30. data/lib/vendor/puppet/application/kick.rb +351 -0
  31. data/lib/vendor/puppet/application/man.rb +4 -0
  32. data/lib/vendor/puppet/application/master.rb +263 -0
  33. data/lib/vendor/puppet/application/module.rb +11 -0
  34. data/lib/vendor/puppet/application/node.rb +4 -0
  35. data/lib/vendor/puppet/application/parser.rb +5 -0
  36. data/lib/vendor/puppet/application/plugin.rb +3 -0
  37. data/lib/vendor/puppet/application/queue.rb +161 -0
  38. data/lib/vendor/puppet/application/report.rb +4 -0
  39. data/lib/vendor/puppet/application/resource.rb +237 -0
  40. data/lib/vendor/puppet/application/resource_type.rb +4 -0
  41. data/lib/vendor/puppet/application/secret_agent.rb +6 -0
  42. data/lib/vendor/puppet/application/status.rb +4 -0
  43. data/lib/vendor/puppet/application.rb +421 -0
  44. data/lib/vendor/puppet/configurer/downloader.rb +86 -0
  45. data/lib/vendor/puppet/configurer/fact_handler.rb +56 -0
  46. data/lib/vendor/puppet/configurer/plugin_handler.rb +37 -0
  47. data/lib/vendor/puppet/configurer.rb +249 -0
  48. data/lib/vendor/puppet/daemon.rb +200 -0
  49. data/lib/vendor/puppet/defaults.rb +970 -0
  50. data/lib/vendor/puppet/dsl/resource_api.rb +120 -0
  51. data/lib/vendor/puppet/dsl/resource_type_api.rb +34 -0
  52. data/lib/vendor/puppet/dsl.rb +7 -0
  53. data/lib/vendor/puppet/error.rb +43 -0
  54. data/lib/vendor/puppet/external/base64.rb +19 -0
  55. data/lib/vendor/puppet/external/dot.rb +326 -0
  56. data/lib/vendor/puppet/external/lock.rb +63 -0
  57. data/lib/vendor/puppet/external/nagios/base.rb +472 -0
  58. data/lib/vendor/puppet/external/nagios/grammar.ry +185 -0
  59. data/lib/vendor/puppet/external/nagios/makefile +9 -0
  60. data/lib/vendor/puppet/external/nagios/parser.rb +775 -0
  61. data/lib/vendor/puppet/external/nagios.rb +48 -0
  62. data/lib/vendor/puppet/external/pson/common.rb +370 -0
  63. data/lib/vendor/puppet/external/pson/pure/generator.rb +401 -0
  64. data/lib/vendor/puppet/external/pson/pure/parser.rb +264 -0
  65. data/lib/vendor/puppet/external/pson/pure.rb +77 -0
  66. data/lib/vendor/puppet/external/pson/version.rb +8 -0
  67. data/lib/vendor/puppet/face/ca.rb +242 -0
  68. data/lib/vendor/puppet/face/catalog/select.rb +49 -0
  69. data/lib/vendor/puppet/face/catalog.rb +131 -0
  70. data/lib/vendor/puppet/face/certificate.rb +148 -0
  71. data/lib/vendor/puppet/face/certificate_request.rb +53 -0
  72. data/lib/vendor/puppet/face/certificate_revocation_list.rb +58 -0
  73. data/lib/vendor/puppet/face/config.rb +45 -0
  74. data/lib/vendor/puppet/face/facts.rb +81 -0
  75. data/lib/vendor/puppet/face/file/download.rb +54 -0
  76. data/lib/vendor/puppet/face/file/store.rb +21 -0
  77. data/lib/vendor/puppet/face/file.rb +47 -0
  78. data/lib/vendor/puppet/face/help/action.erb +53 -0
  79. data/lib/vendor/puppet/face/help/face.erb +79 -0
  80. data/lib/vendor/puppet/face/help/global.erb +19 -0
  81. data/lib/vendor/puppet/face/help/man.erb +136 -0
  82. data/lib/vendor/puppet/face/help.rb +131 -0
  83. data/lib/vendor/puppet/face/instrumentation_data.rb +28 -0
  84. data/lib/vendor/puppet/face/instrumentation_listener.rb +96 -0
  85. data/lib/vendor/puppet/face/instrumentation_probe.rb +77 -0
  86. data/lib/vendor/puppet/face/key.rb +15 -0
  87. data/lib/vendor/puppet/face/man.rb +93 -0
  88. data/lib/vendor/puppet/face/module/build.rb +37 -0
  89. data/lib/vendor/puppet/face/module/changes.rb +38 -0
  90. data/lib/vendor/puppet/face/module/generate.rb +42 -0
  91. data/lib/vendor/puppet/face/module/install.rb +174 -0
  92. data/lib/vendor/puppet/face/module/list.rb +285 -0
  93. data/lib/vendor/puppet/face/module/search.rb +88 -0
  94. data/lib/vendor/puppet/face/module/uninstall.rb +86 -0
  95. data/lib/vendor/puppet/face/module/upgrade.rb +84 -0
  96. data/lib/vendor/puppet/face/module.rb +17 -0
  97. data/lib/vendor/puppet/face/node/clean.rb +156 -0
  98. data/lib/vendor/puppet/face/node.rb +43 -0
  99. data/lib/vendor/puppet/face/parser.rb +51 -0
  100. data/lib/vendor/puppet/face/plugin.rb +55 -0
  101. data/lib/vendor/puppet/face/report.rb +56 -0
  102. data/lib/vendor/puppet/face/resource.rb +53 -0
  103. data/lib/vendor/puppet/face/resource_type.rb +81 -0
  104. data/lib/vendor/puppet/face/secret_agent.rb +54 -0
  105. data/lib/vendor/puppet/face/status.rb +53 -0
  106. data/lib/vendor/puppet/face.rb +12 -0
  107. data/lib/vendor/puppet/feature/base.rb +67 -0
  108. data/lib/vendor/puppet/feature/eventlog.rb +6 -0
  109. data/lib/vendor/puppet/feature/pson.rb +6 -0
  110. data/lib/vendor/puppet/feature/rack.rb +24 -0
  111. data/lib/vendor/puppet/feature/rails.rb +30 -0
  112. data/lib/vendor/puppet/feature/rubygems.rb +3 -0
  113. data/lib/vendor/puppet/feature/selinux.rb +3 -0
  114. data/lib/vendor/puppet/feature/ssh.rb +4 -0
  115. data/lib/vendor/puppet/feature/stomp.rb +6 -0
  116. data/lib/vendor/puppet/feature/zlib.rb +6 -0
  117. data/lib/vendor/puppet/file_bucket/dipper.rb +107 -0
  118. data/lib/vendor/puppet/file_bucket/file.rb +55 -0
  119. data/lib/vendor/puppet/file_bucket.rb +4 -0
  120. data/lib/vendor/puppet/file_collection/lookup.rb +10 -0
  121. data/lib/vendor/puppet/file_collection.rb +19 -0
  122. data/lib/vendor/puppet/file_serving/base.rb +88 -0
  123. data/lib/vendor/puppet/file_serving/configuration/parser.rb +115 -0
  124. data/lib/vendor/puppet/file_serving/configuration.rb +122 -0
  125. data/lib/vendor/puppet/file_serving/content.rb +45 -0
  126. data/lib/vendor/puppet/file_serving/fileset.rb +173 -0
  127. data/lib/vendor/puppet/file_serving/metadata.rb +155 -0
  128. data/lib/vendor/puppet/file_serving/mount/file.rb +121 -0
  129. data/lib/vendor/puppet/file_serving/mount/modules.rb +24 -0
  130. data/lib/vendor/puppet/file_serving/mount/plugins.rb +26 -0
  131. data/lib/vendor/puppet/file_serving/mount.rb +39 -0
  132. data/lib/vendor/puppet/file_serving/terminus_helper.rb +21 -0
  133. data/lib/vendor/puppet/file_serving/terminus_selector.rb +28 -0
  134. data/lib/vendor/puppet/file_serving.rb +3 -0
  135. data/lib/vendor/puppet/forge/cache.rb +55 -0
  136. data/lib/vendor/puppet/forge/repository.rb +102 -0
  137. data/lib/vendor/puppet/forge.rb +98 -0
  138. data/lib/vendor/puppet/indirector/active_record.rb +28 -0
  139. data/lib/vendor/puppet/indirector/catalog/active_record.rb +41 -0
  140. data/lib/vendor/puppet/indirector/catalog/compiler.rb +153 -0
  141. data/lib/vendor/puppet/indirector/catalog/queue.rb +5 -0
  142. data/lib/vendor/puppet/indirector/catalog/rest.rb +6 -0
  143. data/lib/vendor/puppet/indirector/catalog/static_compiler.rb +136 -0
  144. data/lib/vendor/puppet/indirector/catalog/store_configs.rb +5 -0
  145. data/lib/vendor/puppet/indirector/catalog/yaml.rb +22 -0
  146. data/lib/vendor/puppet/indirector/certificate/ca.rb +9 -0
  147. data/lib/vendor/puppet/indirector/certificate/disabled_ca.rb +22 -0
  148. data/lib/vendor/puppet/indirector/certificate/file.rb +9 -0
  149. data/lib/vendor/puppet/indirector/certificate/rest.rb +15 -0
  150. data/lib/vendor/puppet/indirector/certificate_request/ca.rb +22 -0
  151. data/lib/vendor/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  152. data/lib/vendor/puppet/indirector/certificate_request/file.rb +8 -0
  153. data/lib/vendor/puppet/indirector/certificate_request/rest.rb +9 -0
  154. data/lib/vendor/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  155. data/lib/vendor/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  156. data/lib/vendor/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  157. data/lib/vendor/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
  158. data/lib/vendor/puppet/indirector/certificate_status/file.rb +82 -0
  159. data/lib/vendor/puppet/indirector/certificate_status/rest.rb +10 -0
  160. data/lib/vendor/puppet/indirector/certificate_status.rb +4 -0
  161. data/lib/vendor/puppet/indirector/code.rb +6 -0
  162. data/lib/vendor/puppet/indirector/couch.rb +78 -0
  163. data/lib/vendor/puppet/indirector/direct_file_server.rb +19 -0
  164. data/lib/vendor/puppet/indirector/envelope.rb +11 -0
  165. data/lib/vendor/puppet/indirector/exec.rb +48 -0
  166. data/lib/vendor/puppet/indirector/face.rb +137 -0
  167. data/lib/vendor/puppet/indirector/facts/active_record.rb +36 -0
  168. data/lib/vendor/puppet/indirector/facts/couch.rb +31 -0
  169. data/lib/vendor/puppet/indirector/facts/facter.rb +96 -0
  170. data/lib/vendor/puppet/indirector/facts/inventory_active_record.rb +100 -0
  171. data/lib/vendor/puppet/indirector/facts/inventory_service.rb +20 -0
  172. data/lib/vendor/puppet/indirector/facts/memory.rb +9 -0
  173. data/lib/vendor/puppet/indirector/facts/network_device.rb +25 -0
  174. data/lib/vendor/puppet/indirector/facts/rest.rb +8 -0
  175. data/lib/vendor/puppet/indirector/facts/store_configs.rb +5 -0
  176. data/lib/vendor/puppet/indirector/facts/yaml.rb +82 -0
  177. data/lib/vendor/puppet/indirector/file_bucket_file/file.rb +136 -0
  178. data/lib/vendor/puppet/indirector/file_bucket_file/rest.rb +8 -0
  179. data/lib/vendor/puppet/indirector/file_bucket_file/selector.rb +49 -0
  180. data/lib/vendor/puppet/indirector/file_content/file.rb +7 -0
  181. data/lib/vendor/puppet/indirector/file_content/file_server.rb +7 -0
  182. data/lib/vendor/puppet/indirector/file_content/rest.rb +7 -0
  183. data/lib/vendor/puppet/indirector/file_content/selector.rb +30 -0
  184. data/lib/vendor/puppet/indirector/file_content.rb +5 -0
  185. data/lib/vendor/puppet/indirector/file_metadata/file.rb +22 -0
  186. data/lib/vendor/puppet/indirector/file_metadata/file_server.rb +7 -0
  187. data/lib/vendor/puppet/indirector/file_metadata/rest.rb +7 -0
  188. data/lib/vendor/puppet/indirector/file_metadata/selector.rb +30 -0
  189. data/lib/vendor/puppet/indirector/file_metadata.rb +5 -0
  190. data/lib/vendor/puppet/indirector/file_server.rb +65 -0
  191. data/lib/vendor/puppet/indirector/indirection.rb +323 -0
  192. data/lib/vendor/puppet/indirector/instrumentation_data/local.rb +19 -0
  193. data/lib/vendor/puppet/indirector/instrumentation_data/rest.rb +5 -0
  194. data/lib/vendor/puppet/indirector/instrumentation_data.rb +3 -0
  195. data/lib/vendor/puppet/indirector/instrumentation_listener/local.rb +23 -0
  196. data/lib/vendor/puppet/indirector/instrumentation_listener/rest.rb +5 -0
  197. data/lib/vendor/puppet/indirector/instrumentation_listener.rb +3 -0
  198. data/lib/vendor/puppet/indirector/instrumentation_probe/local.rb +24 -0
  199. data/lib/vendor/puppet/indirector/instrumentation_probe/rest.rb +5 -0
  200. data/lib/vendor/puppet/indirector/instrumentation_probe.rb +3 -0
  201. data/lib/vendor/puppet/indirector/inventory/yaml.rb +81 -0
  202. data/lib/vendor/puppet/indirector/key/ca.rb +12 -0
  203. data/lib/vendor/puppet/indirector/key/disabled_ca.rb +22 -0
  204. data/lib/vendor/puppet/indirector/key/file.rb +42 -0
  205. data/lib/vendor/puppet/indirector/ldap.rb +78 -0
  206. data/lib/vendor/puppet/indirector/memory.rb +21 -0
  207. data/lib/vendor/puppet/indirector/node/active_record.rb +13 -0
  208. data/lib/vendor/puppet/indirector/node/exec.rb +60 -0
  209. data/lib/vendor/puppet/indirector/node/ldap.rb +256 -0
  210. data/lib/vendor/puppet/indirector/node/memory.rb +10 -0
  211. data/lib/vendor/puppet/indirector/node/plain.rb +19 -0
  212. data/lib/vendor/puppet/indirector/node/rest.rb +7 -0
  213. data/lib/vendor/puppet/indirector/node/store_configs.rb +5 -0
  214. data/lib/vendor/puppet/indirector/node/yaml.rb +7 -0
  215. data/lib/vendor/puppet/indirector/plain.rb +9 -0
  216. data/lib/vendor/puppet/indirector/queue.rb +81 -0
  217. data/lib/vendor/puppet/indirector/report/processor.rb +61 -0
  218. data/lib/vendor/puppet/indirector/report/rest.rb +7 -0
  219. data/lib/vendor/puppet/indirector/report/yaml.rb +11 -0
  220. data/lib/vendor/puppet/indirector/request.rb +204 -0
  221. data/lib/vendor/puppet/indirector/resource/active_record.rb +93 -0
  222. data/lib/vendor/puppet/indirector/resource/ral.rb +53 -0
  223. data/lib/vendor/puppet/indirector/resource/rest.rb +5 -0
  224. data/lib/vendor/puppet/indirector/resource/store_configs.rb +3 -0
  225. data/lib/vendor/puppet/indirector/resource_type/parser.rb +43 -0
  226. data/lib/vendor/puppet/indirector/resource_type/rest.rb +7 -0
  227. data/lib/vendor/puppet/indirector/resource_type.rb +5 -0
  228. data/lib/vendor/puppet/indirector/rest.rb +166 -0
  229. data/lib/vendor/puppet/indirector/run/local.rb +8 -0
  230. data/lib/vendor/puppet/indirector/run/rest.rb +6 -0
  231. data/lib/vendor/puppet/indirector/ssl_file.rb +178 -0
  232. data/lib/vendor/puppet/indirector/status/local.rb +7 -0
  233. data/lib/vendor/puppet/indirector/status/rest.rb +5 -0
  234. data/lib/vendor/puppet/indirector/status.rb +3 -0
  235. data/lib/vendor/puppet/indirector/store_configs.rb +30 -0
  236. data/lib/vendor/puppet/indirector/terminus.rb +145 -0
  237. data/lib/vendor/puppet/indirector/yaml.rb +75 -0
  238. data/lib/vendor/puppet/indirector.rb +57 -0
  239. data/lib/vendor/puppet/interface/action.rb +322 -0
  240. data/lib/vendor/puppet/interface/action_builder.rb +74 -0
  241. data/lib/vendor/puppet/interface/action_manager.rb +74 -0
  242. data/lib/vendor/puppet/interface/documentation.rb +230 -0
  243. data/lib/vendor/puppet/interface/face_collection.rb +128 -0
  244. data/lib/vendor/puppet/interface/option.rb +127 -0
  245. data/lib/vendor/puppet/interface/option_builder.rb +67 -0
  246. data/lib/vendor/puppet/interface/option_manager.rb +68 -0
  247. data/lib/vendor/puppet/interface.rb +161 -0
  248. data/lib/vendor/puppet/metatype/manager.rb +141 -0
  249. data/lib/vendor/puppet/module.rb +314 -0
  250. data/lib/vendor/puppet/module_tool/applications/application.rb +82 -0
  251. data/lib/vendor/puppet/module_tool/applications/builder.rb +91 -0
  252. data/lib/vendor/puppet/module_tool/applications/checksummer.rb +56 -0
  253. data/lib/vendor/puppet/module_tool/applications/generator.rb +141 -0
  254. data/lib/vendor/puppet/module_tool/applications/installer.rb +183 -0
  255. data/lib/vendor/puppet/module_tool/applications/searcher.rb +15 -0
  256. data/lib/vendor/puppet/module_tool/applications/uninstaller.rb +107 -0
  257. data/lib/vendor/puppet/module_tool/applications/unpacker.rb +67 -0
  258. data/lib/vendor/puppet/module_tool/applications/upgrader.rb +109 -0
  259. data/lib/vendor/puppet/module_tool/applications.rb +15 -0
  260. data/lib/vendor/puppet/module_tool/checksums.rb +52 -0
  261. data/lib/vendor/puppet/module_tool/contents_description.rb +82 -0
  262. data/lib/vendor/puppet/module_tool/dependency.rb +24 -0
  263. data/lib/vendor/puppet/module_tool/errors/base.rb +15 -0
  264. data/lib/vendor/puppet/module_tool/errors/installer.rb +90 -0
  265. data/lib/vendor/puppet/module_tool/errors/shared.rb +115 -0
  266. data/lib/vendor/puppet/module_tool/errors/uninstaller.rb +45 -0
  267. data/lib/vendor/puppet/module_tool/errors/upgrader.rb +72 -0
  268. data/lib/vendor/puppet/module_tool/errors.rb +9 -0
  269. data/lib/vendor/puppet/module_tool/metadata.rb +141 -0
  270. data/lib/vendor/puppet/module_tool/modulefile.rb +75 -0
  271. data/lib/vendor/puppet/module_tool/shared_behaviors.rb +161 -0
  272. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +11 -0
  273. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/README.erb +16 -0
  274. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
  275. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +17 -0
  276. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +11 -0
  277. data/lib/vendor/puppet/module_tool/skeleton.rb +34 -0
  278. data/lib/vendor/puppet/module_tool.rb +99 -0
  279. data/lib/vendor/puppet/network/authconfig.rb +174 -0
  280. data/lib/vendor/puppet/network/authorization.rb +76 -0
  281. data/lib/vendor/puppet/network/authstore.rb +267 -0
  282. data/lib/vendor/puppet/network/client_request.rb +29 -0
  283. data/lib/vendor/puppet/network/format.rb +111 -0
  284. data/lib/vendor/puppet/network/format_handler.rb +181 -0
  285. data/lib/vendor/puppet/network/formats.rb +171 -0
  286. data/lib/vendor/puppet/network/handler/ca.rb +61 -0
  287. data/lib/vendor/puppet/network/handler/filebucket.rb +53 -0
  288. data/lib/vendor/puppet/network/handler/fileserver.rb +732 -0
  289. data/lib/vendor/puppet/network/handler/master.rb +87 -0
  290. data/lib/vendor/puppet/network/handler/report.rb +82 -0
  291. data/lib/vendor/puppet/network/handler/runner.rb +33 -0
  292. data/lib/vendor/puppet/network/handler/status.rb +18 -0
  293. data/lib/vendor/puppet/network/handler.rb +50 -0
  294. data/lib/vendor/puppet/network/http/api/v1.rb +83 -0
  295. data/lib/vendor/puppet/network/http/api.rb +4 -0
  296. data/lib/vendor/puppet/network/http/compression.rb +114 -0
  297. data/lib/vendor/puppet/network/http/handler.rb +247 -0
  298. data/lib/vendor/puppet/network/http/mongrel/rest.rb +99 -0
  299. data/lib/vendor/puppet/network/http/mongrel.rb +55 -0
  300. data/lib/vendor/puppet/network/http/rack/httphandler.rb +16 -0
  301. data/lib/vendor/puppet/network/http/rack/rest.rb +100 -0
  302. data/lib/vendor/puppet/network/http/rack/xmlrpc.rb +65 -0
  303. data/lib/vendor/puppet/network/http/rack.rb +65 -0
  304. data/lib/vendor/puppet/network/http/webrick/rest.rb +81 -0
  305. data/lib/vendor/puppet/network/http/webrick.rb +141 -0
  306. data/lib/vendor/puppet/network/http.rb +15 -0
  307. data/lib/vendor/puppet/network/http_pool.rb +57 -0
  308. data/lib/vendor/puppet/network/http_server/mongrel.rb +129 -0
  309. data/lib/vendor/puppet/network/http_server.rb +3 -0
  310. data/lib/vendor/puppet/network/rest_authconfig.rb +102 -0
  311. data/lib/vendor/puppet/network/rest_authorization.rb +23 -0
  312. data/lib/vendor/puppet/network/rest_controller.rb +2 -0
  313. data/lib/vendor/puppet/network/rights.rb +275 -0
  314. data/lib/vendor/puppet/network/server.rb +164 -0
  315. data/lib/vendor/puppet/network/xmlrpc/processor.rb +86 -0
  316. data/lib/vendor/puppet/network/xmlrpc/server.rb +19 -0
  317. data/lib/vendor/puppet/network/xmlrpc/webrick_servlet.rb +114 -0
  318. data/lib/vendor/puppet/network.rb +3 -0
  319. data/lib/vendor/puppet/node/environment.rb +216 -0
  320. data/lib/vendor/puppet/node/facts.rb +99 -0
  321. data/lib/vendor/puppet/node/inventory.rb +7 -0
  322. data/lib/vendor/puppet/node.rb +120 -0
  323. data/lib/vendor/puppet/parameter/path.rb +34 -0
  324. data/lib/vendor/puppet/parameter/value.rb +69 -0
  325. data/lib/vendor/puppet/parameter/value_collection.rb +143 -0
  326. data/lib/vendor/puppet/parameter.rb +316 -0
  327. data/lib/vendor/puppet/parser/ast/arithmetic_operator.rb +39 -0
  328. data/lib/vendor/puppet/parser/ast/astarray.rb +50 -0
  329. data/lib/vendor/puppet/parser/ast/asthash.rb +37 -0
  330. data/lib/vendor/puppet/parser/ast/boolean_operator.rb +46 -0
  331. data/lib/vendor/puppet/parser/ast/branch.rb +37 -0
  332. data/lib/vendor/puppet/parser/ast/caseopt.rb +52 -0
  333. data/lib/vendor/puppet/parser/ast/casestatement.rb +44 -0
  334. data/lib/vendor/puppet/parser/ast/collection.rb +49 -0
  335. data/lib/vendor/puppet/parser/ast/collexpr.rb +57 -0
  336. data/lib/vendor/puppet/parser/ast/comparison_operator.rb +38 -0
  337. data/lib/vendor/puppet/parser/ast/definition.rb +17 -0
  338. data/lib/vendor/puppet/parser/ast/else.rb +22 -0
  339. data/lib/vendor/puppet/parser/ast/function.rb +50 -0
  340. data/lib/vendor/puppet/parser/ast/hostclass.rb +29 -0
  341. data/lib/vendor/puppet/parser/ast/ifstatement.rb +34 -0
  342. data/lib/vendor/puppet/parser/ast/in_operator.rb +24 -0
  343. data/lib/vendor/puppet/parser/ast/leaf.rb +221 -0
  344. data/lib/vendor/puppet/parser/ast/match_operator.rb +28 -0
  345. data/lib/vendor/puppet/parser/ast/minus.rb +23 -0
  346. data/lib/vendor/puppet/parser/ast/node.rb +20 -0
  347. data/lib/vendor/puppet/parser/ast/nop.rb +11 -0
  348. data/lib/vendor/puppet/parser/ast/not.rb +19 -0
  349. data/lib/vendor/puppet/parser/ast/relationship.rb +47 -0
  350. data/lib/vendor/puppet/parser/ast/resource.rb +74 -0
  351. data/lib/vendor/puppet/parser/ast/resource_defaults.rb +24 -0
  352. data/lib/vendor/puppet/parser/ast/resource_instance.rb +9 -0
  353. data/lib/vendor/puppet/parser/ast/resource_override.rb +67 -0
  354. data/lib/vendor/puppet/parser/ast/resource_reference.rb +28 -0
  355. data/lib/vendor/puppet/parser/ast/resourceparam.rb +29 -0
  356. data/lib/vendor/puppet/parser/ast/selector.rb +44 -0
  357. data/lib/vendor/puppet/parser/ast/tag.rb +24 -0
  358. data/lib/vendor/puppet/parser/ast/top_level_construct.rb +4 -0
  359. data/lib/vendor/puppet/parser/ast/vardef.rb +33 -0
  360. data/lib/vendor/puppet/parser/ast.rb +139 -0
  361. data/lib/vendor/puppet/parser/collector.rb +176 -0
  362. data/lib/vendor/puppet/parser/compiler.rb +476 -0
  363. data/lib/vendor/puppet/parser/files.rb +88 -0
  364. data/lib/vendor/puppet/parser/functions/create_resources.rb +75 -0
  365. data/lib/vendor/puppet/parser/functions/defined.rb +49 -0
  366. data/lib/vendor/puppet/parser/functions/extlookup.rb +152 -0
  367. data/lib/vendor/puppet/parser/functions/fail.rb +4 -0
  368. data/lib/vendor/puppet/parser/functions/file.rb +23 -0
  369. data/lib/vendor/puppet/parser/functions/fqdn_rand.rb +13 -0
  370. data/lib/vendor/puppet/parser/functions/generate.rb +37 -0
  371. data/lib/vendor/puppet/parser/functions/include.rb +24 -0
  372. data/lib/vendor/puppet/parser/functions/inline_template.rb +21 -0
  373. data/lib/vendor/puppet/parser/functions/md5.rb +5 -0
  374. data/lib/vendor/puppet/parser/functions/realize.rb +14 -0
  375. data/lib/vendor/puppet/parser/functions/regsubst.rb +119 -0
  376. data/lib/vendor/puppet/parser/functions/require.rb +57 -0
  377. data/lib/vendor/puppet/parser/functions/search.rb +7 -0
  378. data/lib/vendor/puppet/parser/functions/sha1.rb +5 -0
  379. data/lib/vendor/puppet/parser/functions/shellquote.rb +61 -0
  380. data/lib/vendor/puppet/parser/functions/split.rb +29 -0
  381. data/lib/vendor/puppet/parser/functions/sprintf.rb +39 -0
  382. data/lib/vendor/puppet/parser/functions/tag.rb +6 -0
  383. data/lib/vendor/puppet/parser/functions/tagged.rb +18 -0
  384. data/lib/vendor/puppet/parser/functions/template.rb +23 -0
  385. data/lib/vendor/puppet/parser/functions/versioncmp.rb +37 -0
  386. data/lib/vendor/puppet/parser/functions.rb +165 -0
  387. data/lib/vendor/puppet/parser/grammar.ra +771 -0
  388. data/lib/vendor/puppet/parser/lexer.rb +617 -0
  389. data/lib/vendor/puppet/parser/makefile +8 -0
  390. data/lib/vendor/puppet/parser/parser.rb +2421 -0
  391. data/lib/vendor/puppet/parser/parser_support.rb +211 -0
  392. data/lib/vendor/puppet/parser/relationship.rb +62 -0
  393. data/lib/vendor/puppet/parser/resource/param.rb +25 -0
  394. data/lib/vendor/puppet/parser/resource.rb +341 -0
  395. data/lib/vendor/puppet/parser/scope.rb +497 -0
  396. data/lib/vendor/puppet/parser/templatewrapper.rb +115 -0
  397. data/lib/vendor/puppet/parser/type_loader.rb +172 -0
  398. data/lib/vendor/puppet/parser/yaml_trimmer.rb +9 -0
  399. data/lib/vendor/puppet/parser.rb +4 -0
  400. data/lib/vendor/puppet/property/ensure.rb +92 -0
  401. data/lib/vendor/puppet/property/keyvalue.rb +86 -0
  402. data/lib/vendor/puppet/property/list.rb +75 -0
  403. data/lib/vendor/puppet/property/ordered_list.rb +22 -0
  404. data/lib/vendor/puppet/property.rb +373 -0
  405. data/lib/vendor/puppet/provider/aixobject.rb +393 -0
  406. data/lib/vendor/puppet/provider/augeas/augeas.rb +418 -0
  407. data/lib/vendor/puppet/provider/cisco.rb +9 -0
  408. data/lib/vendor/puppet/provider/computer/computer.rb +20 -0
  409. data/lib/vendor/puppet/provider/confine/exists.rb +19 -0
  410. data/lib/vendor/puppet/provider/confine/false.rb +19 -0
  411. data/lib/vendor/puppet/provider/confine/feature.rb +17 -0
  412. data/lib/vendor/puppet/provider/confine/true.rb +20 -0
  413. data/lib/vendor/puppet/provider/confine/variable.rb +59 -0
  414. data/lib/vendor/puppet/provider/confine.rb +80 -0
  415. data/lib/vendor/puppet/provider/confine_collection.rb +50 -0
  416. data/lib/vendor/puppet/provider/confiner.rb +16 -0
  417. data/lib/vendor/puppet/provider/cron/crontab.rb +200 -0
  418. data/lib/vendor/puppet/provider/exec/posix.rb +39 -0
  419. data/lib/vendor/puppet/provider/exec/shell.rb +25 -0
  420. data/lib/vendor/puppet/provider/exec/windows.rb +56 -0
  421. data/lib/vendor/puppet/provider/exec.rb +84 -0
  422. data/lib/vendor/puppet/provider/file/posix.rb +135 -0
  423. data/lib/vendor/puppet/provider/file/windows.rb +88 -0
  424. data/lib/vendor/puppet/provider/group/aix.rb +141 -0
  425. data/lib/vendor/puppet/provider/group/directoryservice.rb +12 -0
  426. data/lib/vendor/puppet/provider/group/groupadd.rb +29 -0
  427. data/lib/vendor/puppet/provider/group/ldap.rb +45 -0
  428. data/lib/vendor/puppet/provider/group/pw.rb +48 -0
  429. data/lib/vendor/puppet/provider/group/windows_adsi.rb +54 -0
  430. data/lib/vendor/puppet/provider/host/parsed.rb +44 -0
  431. data/lib/vendor/puppet/provider/interface/base.rb +0 -0
  432. data/lib/vendor/puppet/provider/interface/cisco.rb +27 -0
  433. data/lib/vendor/puppet/provider/ldap.rb +137 -0
  434. data/lib/vendor/puppet/provider/macauthorization/macauthorization.rb +313 -0
  435. data/lib/vendor/puppet/provider/mailalias/aliases.rb +44 -0
  436. data/lib/vendor/puppet/provider/maillist/mailman.rb +108 -0
  437. data/lib/vendor/puppet/provider/mcx/mcxcontent.rb +166 -0
  438. data/lib/vendor/puppet/provider/mount/parsed.rb +124 -0
  439. data/lib/vendor/puppet/provider/mount.rb +46 -0
  440. data/lib/vendor/puppet/provider/naginator.rb +63 -0
  441. data/lib/vendor/puppet/provider/nameservice/directoryservice.rb +652 -0
  442. data/lib/vendor/puppet/provider/nameservice/objectadd.rb +33 -0
  443. data/lib/vendor/puppet/provider/nameservice/pw.rb +21 -0
  444. data/lib/vendor/puppet/provider/nameservice.rb +276 -0
  445. data/lib/vendor/puppet/provider/network_device.rb +68 -0
  446. data/lib/vendor/puppet/provider/package/aix.rb +128 -0
  447. data/lib/vendor/puppet/provider/package/appdmg.rb +109 -0
  448. data/lib/vendor/puppet/provider/package/apple.rb +47 -0
  449. data/lib/vendor/puppet/provider/package/apt.rb +111 -0
  450. data/lib/vendor/puppet/provider/package/aptitude.rb +29 -0
  451. data/lib/vendor/puppet/provider/package/aptrpm.rb +83 -0
  452. data/lib/vendor/puppet/provider/package/blastwave.rb +111 -0
  453. data/lib/vendor/puppet/provider/package/dpkg.rb +155 -0
  454. data/lib/vendor/puppet/provider/package/fink.rb +81 -0
  455. data/lib/vendor/puppet/provider/package/freebsd.rb +49 -0
  456. data/lib/vendor/puppet/provider/package/gem.rb +127 -0
  457. data/lib/vendor/puppet/provider/package/hpux.rb +44 -0
  458. data/lib/vendor/puppet/provider/package/macports.rb +105 -0
  459. data/lib/vendor/puppet/provider/package/msi.rb +141 -0
  460. data/lib/vendor/puppet/provider/package/nim.rb +35 -0
  461. data/lib/vendor/puppet/provider/package/openbsd.rb +112 -0
  462. data/lib/vendor/puppet/provider/package/pacman.rb +94 -0
  463. data/lib/vendor/puppet/provider/package/pip.rb +111 -0
  464. data/lib/vendor/puppet/provider/package/pkg.rb +112 -0
  465. data/lib/vendor/puppet/provider/package/pkgdmg.rb +123 -0
  466. data/lib/vendor/puppet/provider/package/pkgutil.rb +174 -0
  467. data/lib/vendor/puppet/provider/package/portage.rb +124 -0
  468. data/lib/vendor/puppet/provider/package/ports.rb +94 -0
  469. data/lib/vendor/puppet/provider/package/portupgrade.rb +241 -0
  470. data/lib/vendor/puppet/provider/package/rpm.rb +132 -0
  471. data/lib/vendor/puppet/provider/package/rug.rb +52 -0
  472. data/lib/vendor/puppet/provider/package/sun.rb +154 -0
  473. data/lib/vendor/puppet/provider/package/sunfreeware.rb +9 -0
  474. data/lib/vendor/puppet/provider/package/up2date.rb +41 -0
  475. data/lib/vendor/puppet/provider/package/urpmi.rb +59 -0
  476. data/lib/vendor/puppet/provider/package/yum.rb +106 -0
  477. data/lib/vendor/puppet/provider/package/yumhelper.py +129 -0
  478. data/lib/vendor/puppet/provider/package/zypper.rb +84 -0
  479. data/lib/vendor/puppet/provider/package.rb +28 -0
  480. data/lib/vendor/puppet/provider/parsedfile.rb +374 -0
  481. data/lib/vendor/puppet/provider/port/parsed.rb +173 -0
  482. data/lib/vendor/puppet/provider/scheduled_task/win32_taskscheduler.rb +565 -0
  483. data/lib/vendor/puppet/provider/selboolean/getsetsebool.rb +47 -0
  484. data/lib/vendor/puppet/provider/selmodule/semodule.rb +134 -0
  485. data/lib/vendor/puppet/provider/service/base.rb +105 -0
  486. data/lib/vendor/puppet/provider/service/bsd.rb +49 -0
  487. data/lib/vendor/puppet/provider/service/daemontools.rb +194 -0
  488. data/lib/vendor/puppet/provider/service/debian.rb +68 -0
  489. data/lib/vendor/puppet/provider/service/freebsd.rb +139 -0
  490. data/lib/vendor/puppet/provider/service/gentoo.rb +54 -0
  491. data/lib/vendor/puppet/provider/service/init.rb +140 -0
  492. data/lib/vendor/puppet/provider/service/launchd.rb +303 -0
  493. data/lib/vendor/puppet/provider/service/openrc.rb +69 -0
  494. data/lib/vendor/puppet/provider/service/redhat.rb +76 -0
  495. data/lib/vendor/puppet/provider/service/runit.rb +103 -0
  496. data/lib/vendor/puppet/provider/service/service.rb +43 -0
  497. data/lib/vendor/puppet/provider/service/smf.rb +104 -0
  498. data/lib/vendor/puppet/provider/service/src.rb +86 -0
  499. data/lib/vendor/puppet/provider/service/systemd.rb +64 -0
  500. data/lib/vendor/puppet/provider/service/upstart.rb +347 -0
  501. data/lib/vendor/puppet/provider/service/windows.rb +106 -0
  502. data/lib/vendor/puppet/provider/ssh_authorized_key/parsed.rb +88 -0
  503. data/lib/vendor/puppet/provider/sshkey/parsed.rb +37 -0
  504. data/lib/vendor/puppet/provider/user/aix.rb +357 -0
  505. data/lib/vendor/puppet/provider/user/directoryservice.rb +86 -0
  506. data/lib/vendor/puppet/provider/user/hpux.rb +31 -0
  507. data/lib/vendor/puppet/provider/user/ldap.rb +129 -0
  508. data/lib/vendor/puppet/provider/user/pw.rb +101 -0
  509. data/lib/vendor/puppet/provider/user/user_role_add.rb +207 -0
  510. data/lib/vendor/puppet/provider/user/useradd.rb +127 -0
  511. data/lib/vendor/puppet/provider/user/windows_adsi.rb +99 -0
  512. data/lib/vendor/puppet/provider/vlan/cisco.rb +28 -0
  513. data/lib/vendor/puppet/provider/zfs/solaris.rb +45 -0
  514. data/lib/vendor/puppet/provider/zone/solaris.rb +260 -0
  515. data/lib/vendor/puppet/provider/zpool/solaris.rb +116 -0
  516. data/lib/vendor/puppet/provider.rb +290 -0
  517. data/lib/vendor/puppet/rails/benchmark.rb +63 -0
  518. data/lib/vendor/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
  519. data/lib/vendor/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
  520. data/lib/vendor/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  521. data/lib/vendor/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
  522. data/lib/vendor/puppet/rails/database/schema.rb +131 -0
  523. data/lib/vendor/puppet/rails/fact_name.rb +6 -0
  524. data/lib/vendor/puppet/rails/fact_value.rb +8 -0
  525. data/lib/vendor/puppet/rails/host.rb +258 -0
  526. data/lib/vendor/puppet/rails/inventory_fact.rb +5 -0
  527. data/lib/vendor/puppet/rails/inventory_node.rb +43 -0
  528. data/lib/vendor/puppet/rails/param_name.rb +25 -0
  529. data/lib/vendor/puppet/rails/param_value.rb +74 -0
  530. data/lib/vendor/puppet/rails/puppet_tag.rb +10 -0
  531. data/lib/vendor/puppet/rails/resource.rb +231 -0
  532. data/lib/vendor/puppet/rails/resource_tag.rb +26 -0
  533. data/lib/vendor/puppet/rails/source_file.rb +8 -0
  534. data/lib/vendor/puppet/rails.rb +132 -0
  535. data/lib/vendor/puppet/rb_tree_map.rb +388 -0
  536. data/lib/vendor/puppet/reference/configuration.rb +69 -0
  537. data/lib/vendor/puppet/reference/function.rb +17 -0
  538. data/lib/vendor/puppet/reference/indirection.rb +32 -0
  539. data/lib/vendor/puppet/reference/metaparameter.rb +43 -0
  540. data/lib/vendor/puppet/reference/network.rb +39 -0
  541. data/lib/vendor/puppet/reference/providers.rb +119 -0
  542. data/lib/vendor/puppet/reference/report.rb +23 -0
  543. data/lib/vendor/puppet/reference/type.rb +116 -0
  544. data/lib/vendor/puppet/relationship.rb +95 -0
  545. data/lib/vendor/puppet/reports/http.rb +25 -0
  546. data/lib/vendor/puppet/reports/log.rb +14 -0
  547. data/lib/vendor/puppet/reports/rrdgraph.rb +128 -0
  548. data/lib/vendor/puppet/reports/store.rb +74 -0
  549. data/lib/vendor/puppet/reports/tagmail.rb +179 -0
  550. data/lib/vendor/puppet/reports.rb +49 -0
  551. data/lib/vendor/puppet/resource/catalog.rb +661 -0
  552. data/lib/vendor/puppet/resource/status.rb +79 -0
  553. data/lib/vendor/puppet/resource/type.rb +344 -0
  554. data/lib/vendor/puppet/resource/type_collection.rb +215 -0
  555. data/lib/vendor/puppet/resource/type_collection_helper.rb +7 -0
  556. data/lib/vendor/puppet/resource.rb +467 -0
  557. data/lib/vendor/puppet/run.rb +77 -0
  558. data/lib/vendor/puppet/simple_graph.rb +550 -0
  559. data/lib/vendor/puppet/ssl/base.rb +86 -0
  560. data/lib/vendor/puppet/ssl/certificate.rb +40 -0
  561. data/lib/vendor/puppet/ssl/certificate_authority/interface.rb +182 -0
  562. data/lib/vendor/puppet/ssl/certificate_authority.rb +374 -0
  563. data/lib/vendor/puppet/ssl/certificate_factory.rb +166 -0
  564. data/lib/vendor/puppet/ssl/certificate_request.rb +149 -0
  565. data/lib/vendor/puppet/ssl/certificate_revocation_list.rb +84 -0
  566. data/lib/vendor/puppet/ssl/host.rb +365 -0
  567. data/lib/vendor/puppet/ssl/inventory.rb +54 -0
  568. data/lib/vendor/puppet/ssl/key.rb +56 -0
  569. data/lib/vendor/puppet/ssl.rb +8 -0
  570. data/lib/vendor/puppet/status.rb +28 -0
  571. data/lib/vendor/puppet/test/test_helper.rb +141 -0
  572. data/lib/vendor/puppet/transaction/event.rb +66 -0
  573. data/lib/vendor/puppet/transaction/event_manager.rb +115 -0
  574. data/lib/vendor/puppet/transaction/report.rb +200 -0
  575. data/lib/vendor/puppet/transaction/resource_harness.rb +178 -0
  576. data/lib/vendor/puppet/transaction.rb +493 -0
  577. data/lib/vendor/puppet/transportable.rb +248 -0
  578. data/lib/vendor/puppet/type/augeas.rb +218 -0
  579. data/lib/vendor/puppet/type/component.rb +85 -0
  580. data/lib/vendor/puppet/type/computer.rb +66 -0
  581. data/lib/vendor/puppet/type/cron.rb +421 -0
  582. data/lib/vendor/puppet/type/exec.rb +520 -0
  583. data/lib/vendor/puppet/type/file/checksum.rb +33 -0
  584. data/lib/vendor/puppet/type/file/content.rb +230 -0
  585. data/lib/vendor/puppet/type/file/ctime.rb +18 -0
  586. data/lib/vendor/puppet/type/file/ensure.rb +172 -0
  587. data/lib/vendor/puppet/type/file/group.rb +41 -0
  588. data/lib/vendor/puppet/type/file/mode.rb +148 -0
  589. data/lib/vendor/puppet/type/file/mtime.rb +17 -0
  590. data/lib/vendor/puppet/type/file/owner.rb +44 -0
  591. data/lib/vendor/puppet/type/file/selcontext.rb +123 -0
  592. data/lib/vendor/puppet/type/file/source.rb +195 -0
  593. data/lib/vendor/puppet/type/file/target.rb +87 -0
  594. data/lib/vendor/puppet/type/file/type.rb +19 -0
  595. data/lib/vendor/puppet/type/file.rb +829 -0
  596. data/lib/vendor/puppet/type/filebucket.rb +114 -0
  597. data/lib/vendor/puppet/type/group.rb +149 -0
  598. data/lib/vendor/puppet/type/host.rb +87 -0
  599. data/lib/vendor/puppet/type/interface.rb +112 -0
  600. data/lib/vendor/puppet/type/k5login.rb +88 -0
  601. data/lib/vendor/puppet/type/macauthorization.rb +167 -0
  602. data/lib/vendor/puppet/type/mailalias.rb +48 -0
  603. data/lib/vendor/puppet/type/maillist.rb +62 -0
  604. data/lib/vendor/puppet/type/mcx.rb +99 -0
  605. data/lib/vendor/puppet/type/mount.rb +241 -0
  606. data/lib/vendor/puppet/type/nagios_command.rb +3 -0
  607. data/lib/vendor/puppet/type/nagios_contact.rb +3 -0
  608. data/lib/vendor/puppet/type/nagios_contactgroup.rb +3 -0
  609. data/lib/vendor/puppet/type/nagios_host.rb +3 -0
  610. data/lib/vendor/puppet/type/nagios_hostdependency.rb +3 -0
  611. data/lib/vendor/puppet/type/nagios_hostescalation.rb +3 -0
  612. data/lib/vendor/puppet/type/nagios_hostextinfo.rb +3 -0
  613. data/lib/vendor/puppet/type/nagios_hostgroup.rb +3 -0
  614. data/lib/vendor/puppet/type/nagios_service.rb +3 -0
  615. data/lib/vendor/puppet/type/nagios_servicedependency.rb +3 -0
  616. data/lib/vendor/puppet/type/nagios_serviceescalation.rb +3 -0
  617. data/lib/vendor/puppet/type/nagios_serviceextinfo.rb +3 -0
  618. data/lib/vendor/puppet/type/nagios_servicegroup.rb +3 -0
  619. data/lib/vendor/puppet/type/nagios_timeperiod.rb +3 -0
  620. data/lib/vendor/puppet/type/notify.rb +44 -0
  621. data/lib/vendor/puppet/type/package.rb +357 -0
  622. data/lib/vendor/puppet/type/port.rb +119 -0
  623. data/lib/vendor/puppet/type/resources.rb +131 -0
  624. data/lib/vendor/puppet/type/router.rb +17 -0
  625. data/lib/vendor/puppet/type/schedule.rb +360 -0
  626. data/lib/vendor/puppet/type/scheduled_task.rb +166 -0
  627. data/lib/vendor/puppet/type/selboolean.rb +26 -0
  628. data/lib/vendor/puppet/type/selmodule.rb +59 -0
  629. data/lib/vendor/puppet/type/service.rb +221 -0
  630. data/lib/vendor/puppet/type/ssh_authorized_key.rb +112 -0
  631. data/lib/vendor/puppet/type/sshkey.rb +72 -0
  632. data/lib/vendor/puppet/type/stage.rb +19 -0
  633. data/lib/vendor/puppet/type/tidy.rb +333 -0
  634. data/lib/vendor/puppet/type/user.rb +524 -0
  635. data/lib/vendor/puppet/type/vlan.rb +26 -0
  636. data/lib/vendor/puppet/type/whit.rb +34 -0
  637. data/lib/vendor/puppet/type/yumrepo.rb +361 -0
  638. data/lib/vendor/puppet/type/zfs.rb +146 -0
  639. data/lib/vendor/puppet/type/zone.rb +492 -0
  640. data/lib/vendor/puppet/type/zpool.rb +91 -0
  641. data/lib/vendor/puppet/type.rb +1979 -0
  642. data/lib/vendor/puppet/util/adsi.rb +296 -0
  643. data/lib/vendor/puppet/util/autoload/file_cache.rb +92 -0
  644. data/lib/vendor/puppet/util/autoload.rb +158 -0
  645. data/lib/vendor/puppet/util/backups.rb +87 -0
  646. data/lib/vendor/puppet/util/cacher.rb +80 -0
  647. data/lib/vendor/puppet/util/checksums.rb +143 -0
  648. data/lib/vendor/puppet/util/classgen.rb +209 -0
  649. data/lib/vendor/puppet/util/colors.rb +128 -0
  650. data/lib/vendor/puppet/util/command_line.rb +185 -0
  651. data/lib/vendor/puppet/util/constant_inflector.rb +15 -0
  652. data/lib/vendor/puppet/util/diff.rb +77 -0
  653. data/lib/vendor/puppet/util/docs.rb +123 -0
  654. data/lib/vendor/puppet/util/errors.rb +63 -0
  655. data/lib/vendor/puppet/util/execution.rb +20 -0
  656. data/lib/vendor/puppet/util/execution_stub.rb +26 -0
  657. data/lib/vendor/puppet/util/feature.rb +83 -0
  658. data/lib/vendor/puppet/util/file_locking.rb +47 -0
  659. data/lib/vendor/puppet/util/fileparsing.rb +373 -0
  660. data/lib/vendor/puppet/util/filetype.rb +296 -0
  661. data/lib/vendor/puppet/util/graph.rb +27 -0
  662. data/lib/vendor/puppet/util/inifile.rb +203 -0
  663. data/lib/vendor/puppet/util/inline_docs.rb +26 -0
  664. data/lib/vendor/puppet/util/instance_loader.rb +81 -0
  665. data/lib/vendor/puppet/util/instrumentation/data.rb +34 -0
  666. data/lib/vendor/puppet/util/instrumentation/indirection_probe.rb +29 -0
  667. data/lib/vendor/puppet/util/instrumentation/instrumentable.rb +143 -0
  668. data/lib/vendor/puppet/util/instrumentation/listener.rb +60 -0
  669. data/lib/vendor/puppet/util/instrumentation/listeners/log.rb +29 -0
  670. data/lib/vendor/puppet/util/instrumentation/listeners/performance.rb +30 -0
  671. data/lib/vendor/puppet/util/instrumentation.rb +171 -0
  672. data/lib/vendor/puppet/util/ldap/connection.rb +74 -0
  673. data/lib/vendor/puppet/util/ldap/generator.rb +42 -0
  674. data/lib/vendor/puppet/util/ldap/manager.rb +279 -0
  675. data/lib/vendor/puppet/util/ldap.rb +2 -0
  676. data/lib/vendor/puppet/util/loadedfile.rb +61 -0
  677. data/lib/vendor/puppet/util/log/destination.rb +49 -0
  678. data/lib/vendor/puppet/util/log/destinations.rb +268 -0
  679. data/lib/vendor/puppet/util/log.rb +275 -0
  680. data/lib/vendor/puppet/util/log_paths.rb +22 -0
  681. data/lib/vendor/puppet/util/logging.rb +51 -0
  682. data/lib/vendor/puppet/util/metaid.rb +21 -0
  683. data/lib/vendor/puppet/util/methodhelper.rb +32 -0
  684. data/lib/vendor/puppet/util/metric.rb +186 -0
  685. data/lib/vendor/puppet/util/monkey_patches.rb +243 -0
  686. data/lib/vendor/puppet/util/nagios_maker.rb +60 -0
  687. data/lib/vendor/puppet/util/network_device/base.rb +27 -0
  688. data/lib/vendor/puppet/util/network_device/cisco/device.rb +257 -0
  689. data/lib/vendor/puppet/util/network_device/cisco/facts.rb +72 -0
  690. data/lib/vendor/puppet/util/network_device/cisco/interface.rb +82 -0
  691. data/lib/vendor/puppet/util/network_device/cisco.rb +4 -0
  692. data/lib/vendor/puppet/util/network_device/config.rb +92 -0
  693. data/lib/vendor/puppet/util/network_device/ipcalc.rb +68 -0
  694. data/lib/vendor/puppet/util/network_device/transport/base.rb +26 -0
  695. data/lib/vendor/puppet/util/network_device/transport/ssh.rb +121 -0
  696. data/lib/vendor/puppet/util/network_device/transport/telnet.rb +42 -0
  697. data/lib/vendor/puppet/util/network_device/transport.rb +3 -0
  698. data/lib/vendor/puppet/util/network_device.rb +17 -0
  699. data/lib/vendor/puppet/util/package.rb +31 -0
  700. data/lib/vendor/puppet/util/pidlock.rb +117 -0
  701. data/lib/vendor/puppet/util/platform.rb +22 -0
  702. data/lib/vendor/puppet/util/plugins.rb +82 -0
  703. data/lib/vendor/puppet/util/posix.rb +137 -0
  704. data/lib/vendor/puppet/util/provider_features.rb +168 -0
  705. data/lib/vendor/puppet/util/pson.rb +13 -0
  706. data/lib/vendor/puppet/util/queue/stomp.rb +60 -0
  707. data/lib/vendor/puppet/util/queue.rb +96 -0
  708. data/lib/vendor/puppet/util/rails/cache_accumulator.rb +65 -0
  709. data/lib/vendor/puppet/util/rails/collection_merger.rb +17 -0
  710. data/lib/vendor/puppet/util/rails/reference_serializer.rb +32 -0
  711. data/lib/vendor/puppet/util/rdoc.rb +87 -0
  712. data/lib/vendor/puppet/util/reference.rb +124 -0
  713. data/lib/vendor/puppet/util/resource_template.rb +61 -0
  714. data/lib/vendor/puppet/util/retryaction.rb +48 -0
  715. data/lib/vendor/puppet/util/run_mode.rb +82 -0
  716. data/lib/vendor/puppet/util/selinux.rb +211 -0
  717. data/lib/vendor/puppet/util/settings/boolean_setting.rb +30 -0
  718. data/lib/vendor/puppet/util/settings/file_setting.rb +135 -0
  719. data/lib/vendor/puppet/util/settings/setting.rb +94 -0
  720. data/lib/vendor/puppet/util/settings.rb +926 -0
  721. data/lib/vendor/puppet/util/storage.rb +96 -0
  722. data/lib/vendor/puppet/util/subclass_loader.rb +82 -0
  723. data/lib/vendor/puppet/util/suidmanager.rb +173 -0
  724. data/lib/vendor/puppet/util/symbolic_file_mode.rb +140 -0
  725. data/lib/vendor/puppet/util/tagging.rb +78 -0
  726. data/lib/vendor/puppet/util/terminal.rb +16 -0
  727. data/lib/vendor/puppet/util/user_attr.rb +21 -0
  728. data/lib/vendor/puppet/util/warnings.rb +29 -0
  729. data/lib/vendor/puppet/util/windows/error.rb +16 -0
  730. data/lib/vendor/puppet/util/windows/file.rb +27 -0
  731. data/lib/vendor/puppet/util/windows/process.rb +33 -0
  732. data/lib/vendor/puppet/util/windows/security.rb +622 -0
  733. data/lib/vendor/puppet/util/windows/sid.rb +96 -0
  734. data/lib/vendor/puppet/util/windows/user.rb +106 -0
  735. data/lib/vendor/puppet/util/windows.rb +8 -0
  736. data/lib/vendor/puppet/util/zaml.rb +407 -0
  737. data/lib/vendor/puppet/util.rb +646 -0
  738. data/lib/vendor/puppet/version.rb +18 -0
  739. data/lib/vendor/puppet.rb +125 -0
  740. data/lib/vendor/semver.rb +124 -0
  741. data/puppet-parse.gemspec +2 -8
  742. metadata +812 -94
@@ -0,0 +1,829 @@
1
+ require 'digest/md5'
2
+ require 'cgi'
3
+ require 'etc'
4
+ require 'uri'
5
+ require 'fileutils'
6
+ require 'enumerator'
7
+ require 'pathname'
8
+ require 'puppet/network/handler'
9
+ require 'puppet/util/diff'
10
+ require 'puppet/util/checksums'
11
+ require 'puppet/util/backups'
12
+ require 'puppet/util/symbolic_file_mode'
13
+
14
+ Puppet::Type.newtype(:file) do
15
+ include Puppet::Util::MethodHelper
16
+ include Puppet::Util::Checksums
17
+ include Puppet::Util::Backups
18
+ include Puppet::Util::SymbolicFileMode
19
+
20
+ @doc = "Manages files, including their content, ownership, and permissions.
21
+
22
+ The `file` type can manage normal files, directories, and symlinks; the
23
+ type should be specified in the `ensure` attribute. Note that symlinks cannot
24
+ be managed on Windows systems.
25
+
26
+ File contents can be managed directly with the `content` attribute, or
27
+ downloaded from a remote source using the `source` attribute; the latter
28
+ can also be used to recursively serve directories (when the `recurse`
29
+ attribute is set to `true` or `local`). On Windows, note that file
30
+ contents are managed in binary mode; Puppet never automatically translates
31
+ line endings.
32
+
33
+ **Autorequires:** If Puppet is managing the user or group that owns a
34
+ file, the file resource will autorequire them. If Puppet is managing any
35
+ parent directories of a file, the file resource will autorequire them."
36
+
37
+ def self.title_patterns
38
+ [ [ /^(.*?)\/*\Z/m, [ [ :path ] ] ] ]
39
+ end
40
+
41
+ newparam(:path) do
42
+ desc <<-'EOT'
43
+ The path to the file to manage. Must be fully qualified.
44
+
45
+ On Windows, the path should include the drive letter and should use `/` as
46
+ the separator character (rather than `\\`).
47
+ EOT
48
+ isnamevar
49
+
50
+ validate do |value|
51
+ unless Puppet::Util.absolute_path?(value)
52
+ fail Puppet::Error, "File paths must be fully qualified, not '#{value}'"
53
+ end
54
+ end
55
+
56
+ munge do |value|
57
+ ::File.expand_path(value)
58
+ end
59
+ end
60
+
61
+ newparam(:backup) do
62
+ desc "Whether files should be backed up before
63
+ being replaced. The preferred method of backing files up is via
64
+ a `filebucket`, which stores files by their MD5 sums and allows
65
+ easy retrieval without littering directories with backups. You
66
+ can specify a local filebucket or a network-accessible
67
+ server-based filebucket by setting `backup => bucket-name`.
68
+ Alternatively, if you specify any value that begins with a `.`
69
+ (e.g., `.puppet-bak`), then Puppet will use copy the file in
70
+ the same directory with that value as the extension of the
71
+ backup. Setting `backup => false` disables all backups of the
72
+ file in question.
73
+
74
+ Puppet automatically creates a local filebucket named `puppet` and
75
+ defaults to backing up there. To use a server-based filebucket,
76
+ you must specify one in your configuration.
77
+
78
+ filebucket { main:
79
+ server => puppet,
80
+ path => false,
81
+ # The path => false line works around a known issue with the filebucket type.
82
+ }
83
+
84
+ The `puppet master` daemon creates a filebucket by default,
85
+ so you can usually back up to your main server with this
86
+ configuration. Once you've described the bucket in your
87
+ configuration, you can use it in any file's backup attribute:
88
+
89
+ file { \"/my/file\":
90
+ source => \"/path/in/nfs/or/something\",
91
+ backup => main
92
+ }
93
+
94
+ This will back the file up to the central server.
95
+
96
+ At this point, the benefits of using a central filebucket are that you
97
+ do not have backup files lying around on each of your machines, a given
98
+ version of a file is only backed up once, you can restore any given file
99
+ manually (no matter how old), and you can use Puppet Dashboard to view
100
+ file contents. Eventually, transactional support will be able to
101
+ automatically restore filebucketed files.
102
+ "
103
+
104
+ defaultto "puppet"
105
+
106
+ munge do |value|
107
+ # I don't really know how this is happening.
108
+ value = value.shift if value.is_a?(Array)
109
+
110
+ case value
111
+ when false, "false", :false
112
+ false
113
+ when true, "true", ".puppet-bak", :true
114
+ ".puppet-bak"
115
+ when String
116
+ value
117
+ else
118
+ self.fail "Invalid backup type #{value.inspect}"
119
+ end
120
+ end
121
+ end
122
+
123
+ newparam(:recurse) do
124
+ desc "Whether and how deeply to do recursive
125
+ management. Options are:
126
+
127
+ * `inf,true` --- Regular style recursion on both remote and local
128
+ directory structure.
129
+ * `remote` --- Descends recursively into the remote directory
130
+ but not the local directory. Allows copying of
131
+ a few files into a directory containing many
132
+ unmanaged files without scanning all the local files.
133
+ * `false` --- Default of no recursion.
134
+ * `[0-9]+` --- Same as true, but limit recursion. Warning: this syntax
135
+ has been deprecated in favor of the `recurselimit` attribute.
136
+ "
137
+
138
+ newvalues(:true, :false, :inf, :remote, /^[0-9]+$/)
139
+
140
+ # Replace the validation so that we allow numbers in
141
+ # addition to string representations of them.
142
+ validate { |arg| }
143
+ munge do |value|
144
+ newval = super(value)
145
+ case newval
146
+ when :true, :inf; true
147
+ when :false; false
148
+ when :remote; :remote
149
+ when Integer, Fixnum, Bignum
150
+ self.warning "Setting recursion depth with the recurse parameter is now deprecated, please use recurselimit"
151
+
152
+ # recurse == 0 means no recursion
153
+ return false if value == 0
154
+
155
+ resource[:recurselimit] = value
156
+ true
157
+ when /^\d+$/
158
+ self.warning "Setting recursion depth with the recurse parameter is now deprecated, please use recurselimit"
159
+ value = Integer(value)
160
+
161
+ # recurse == 0 means no recursion
162
+ return false if value == 0
163
+
164
+ resource[:recurselimit] = value
165
+ true
166
+ else
167
+ self.fail "Invalid recurse value #{value.inspect}"
168
+ end
169
+ end
170
+ end
171
+
172
+ newparam(:recurselimit) do
173
+ desc "How deeply to do recursive management."
174
+
175
+ newvalues(/^[0-9]+$/)
176
+
177
+ munge do |value|
178
+ newval = super(value)
179
+ case newval
180
+ when Integer, Fixnum, Bignum; value
181
+ when /^\d+$/; Integer(value)
182
+ else
183
+ self.fail "Invalid recurselimit value #{value.inspect}"
184
+ end
185
+ end
186
+ end
187
+
188
+ newparam(:replace, :boolean => true) do
189
+ desc "Whether to replace a file that already exists on the local system but
190
+ whose content doesn't match what the `source` or `content` attribute
191
+ specifies. Setting this to false allows file resources to initialize files
192
+ without overwriting future changes. Note that this only affects content;
193
+ Puppet will still manage ownership and permissions. Defaults to `true`."
194
+ newvalues(:true, :false)
195
+ aliasvalue(:yes, :true)
196
+ aliasvalue(:no, :false)
197
+ defaultto :true
198
+ end
199
+
200
+ newparam(:force, :boolean => true) do
201
+ desc "Perform the file operation even if it will destroy one or more directories.
202
+ You must use `force` in order to:
203
+
204
+ * `purge` subdirectories
205
+ * Replace directories with files or links
206
+ * Remove a directory when `ensure => absent`"
207
+ newvalues(:true, :false)
208
+ defaultto false
209
+ end
210
+
211
+ newparam(:ignore) do
212
+ desc "A parameter which omits action on files matching
213
+ specified patterns during recursion. Uses Ruby's builtin globbing
214
+ engine, so shell metacharacters are fully supported, e.g. `[a-z]*`.
215
+ Matches that would descend into the directory structure are ignored,
216
+ e.g., `*/*`."
217
+
218
+ validate do |value|
219
+ unless value.is_a?(Array) or value.is_a?(String) or value == false
220
+ self.devfail "Ignore must be a string or an Array"
221
+ end
222
+ end
223
+ end
224
+
225
+ newparam(:links) do
226
+ desc "How to handle links during file actions. During file copying,
227
+ `follow` will copy the target file instead of the link, `manage`
228
+ will copy the link itself, and `ignore` will just pass it by.
229
+ When not copying, `manage` and `ignore` behave equivalently
230
+ (because you cannot really ignore links entirely during local
231
+ recursion), and `follow` will manage the file to which the link points."
232
+
233
+ newvalues(:follow, :manage)
234
+
235
+ defaultto :manage
236
+ end
237
+
238
+ newparam(:purge, :boolean => true) do
239
+ desc "Whether unmanaged files should be purged. This option only makes
240
+ sense when managing directories with `recurse => true`.
241
+
242
+ * When recursively duplicating an entire directory with the `source`
243
+ attribute, `purge => true` will automatically purge any files
244
+ that are not in the source directory.
245
+ * When managing files in a directory as individual resources,
246
+ setting `purge => true` will purge any files that aren't being
247
+ specifically managed.
248
+
249
+ If you have a filebucket configured, the purged files will be uploaded,
250
+ but if you do not, this will destroy data."
251
+
252
+ defaultto :false
253
+
254
+ newvalues(:true, :false)
255
+ end
256
+
257
+ newparam(:sourceselect) do
258
+ desc "Whether to copy all valid sources, or just the first one. This parameter
259
+ only affects recursive directory copies; by default, the first valid
260
+ source is the only one used, but if this parameter is set to `all`, then
261
+ all valid sources will have all of their contents copied to the local
262
+ system. If a given file exists in more than one source, the version from
263
+ the earliest source in the list will be used."
264
+
265
+ defaultto :first
266
+
267
+ newvalues(:first, :all)
268
+ end
269
+
270
+ # Autorequire the nearest ancestor directory found in the catalog.
271
+ autorequire(:file) do
272
+ req = []
273
+ path = Pathname.new(self[:path])
274
+ if !path.root?
275
+ # Start at our parent, to avoid autorequiring ourself
276
+ parents = path.parent.enum_for(:ascend)
277
+ if found = parents.find { |p| catalog.resource(:file, p.to_s) }
278
+ req << found.to_s
279
+ end
280
+ end
281
+ # if the resource is a link, make sure the target is created first
282
+ req << self[:target] if self[:target]
283
+ req
284
+ end
285
+
286
+ # Autorequire the owner and group of the file.
287
+ {:user => :owner, :group => :group}.each do |type, property|
288
+ autorequire(type) do
289
+ if @parameters.include?(property)
290
+ # The user/group property automatically converts to IDs
291
+ next unless should = @parameters[property].shouldorig
292
+ val = should[0]
293
+ if val.is_a?(Integer) or val =~ /^\d+$/
294
+ nil
295
+ else
296
+ val
297
+ end
298
+ end
299
+ end
300
+ end
301
+
302
+ CREATORS = [:content, :source, :target]
303
+ SOURCE_ONLY_CHECKSUMS = [:none, :ctime, :mtime]
304
+
305
+ validate do
306
+ creator_count = 0
307
+ CREATORS.each do |param|
308
+ creator_count += 1 if self.should(param)
309
+ end
310
+ creator_count += 1 if @parameters.include?(:source)
311
+ self.fail "You cannot specify more than one of #{CREATORS.collect { |p| p.to_s}.join(", ")}" if creator_count > 1
312
+
313
+ self.fail "You cannot specify a remote recursion without a source" if !self[:source] and self[:recurse] == :remote
314
+
315
+ self.fail "You cannot specify source when using checksum 'none'" if self[:checksum] == :none && !self[:source].nil?
316
+
317
+ SOURCE_ONLY_CHECKSUMS.each do |checksum_type|
318
+ self.fail "You cannot specify content when using checksum '#{checksum_type}'" if self[:checksum] == checksum_type && !self[:content].nil?
319
+ end
320
+
321
+ self.warning "Possible error: recurselimit is set but not recurse, no recursion will happen" if !self[:recurse] and self[:recurselimit]
322
+
323
+ provider.validate if provider.respond_to?(:validate)
324
+ end
325
+
326
+ def self.[](path)
327
+ return nil unless path
328
+ super(path.gsub(/\/+/, '/').sub(/\/$/, ''))
329
+ end
330
+
331
+ def self.instances
332
+ return []
333
+ end
334
+
335
+ # Determine the user to write files as.
336
+ def asuser
337
+ if self.should(:owner) and ! self.should(:owner).is_a?(Symbol)
338
+ writeable = Puppet::Util::SUIDManager.asuser(self.should(:owner)) {
339
+ FileTest.writable?(::File.dirname(self[:path]))
340
+ }
341
+
342
+ # If the parent directory is writeable, then we execute
343
+ # as the user in question. Otherwise we'll rely on
344
+ # the 'owner' property to do things.
345
+ asuser = self.should(:owner) if writeable
346
+ end
347
+
348
+ asuser
349
+ end
350
+
351
+ def bucket
352
+ return @bucket if @bucket
353
+
354
+ backup = self[:backup]
355
+ return nil unless backup
356
+ return nil if backup =~ /^\./
357
+
358
+ unless catalog or backup == "puppet"
359
+ fail "Can not find filebucket for backups without a catalog"
360
+ end
361
+
362
+ unless catalog and filebucket = catalog.resource(:filebucket, backup) or backup == "puppet"
363
+ fail "Could not find filebucket #{backup} specified in backup"
364
+ end
365
+
366
+ return default_bucket unless filebucket
367
+
368
+ @bucket = filebucket.bucket
369
+
370
+ @bucket
371
+ end
372
+
373
+ def default_bucket
374
+ Puppet::Type.type(:filebucket).mkdefaultbucket.bucket
375
+ end
376
+
377
+ # Does the file currently exist? Just checks for whether
378
+ # we have a stat
379
+ def exist?
380
+ stat ? true : false
381
+ end
382
+
383
+ # We have to do some extra finishing, to retrieve our bucket if
384
+ # there is one.
385
+ def finish
386
+ # Look up our bucket, if there is one
387
+ bucket
388
+ super
389
+ end
390
+
391
+ # Create any children via recursion or whatever.
392
+ def eval_generate
393
+ return [] unless self.recurse?
394
+
395
+ recurse
396
+ #recurse.reject do |resource|
397
+ # catalog.resource(:file, resource[:path])
398
+ #end.each do |child|
399
+ # catalog.add_resource child
400
+ # catalog.relationship_graph.add_edge self, child
401
+ #end
402
+ end
403
+
404
+ def ancestors
405
+ ancestors = Pathname.new(self[:path]).enum_for(:ascend).map(&:to_s)
406
+ ancestors.delete(self[:path])
407
+ ancestors
408
+ end
409
+
410
+ def flush
411
+ # We want to make sure we retrieve metadata anew on each transaction.
412
+ @parameters.each do |name, param|
413
+ param.flush if param.respond_to?(:flush)
414
+ end
415
+ @stat = :needs_stat
416
+ end
417
+
418
+ def initialize(hash)
419
+ # Used for caching clients
420
+ @clients = {}
421
+
422
+ super
423
+
424
+ # If they've specified a source, we get our 'should' values
425
+ # from it.
426
+ unless self[:ensure]
427
+ if self[:target]
428
+ self[:ensure] = :link
429
+ elsif self[:content]
430
+ self[:ensure] = :file
431
+ end
432
+ end
433
+
434
+ @stat = :needs_stat
435
+ end
436
+
437
+ # Configure discovered resources to be purged.
438
+ def mark_children_for_purging(children)
439
+ children.each do |name, child|
440
+ next if child[:source]
441
+ child[:ensure] = :absent
442
+ end
443
+ end
444
+
445
+ # Create a new file or directory object as a child to the current
446
+ # object.
447
+ def newchild(path)
448
+ full_path = ::File.join(self[:path], path)
449
+
450
+ # Add some new values to our original arguments -- these are the ones
451
+ # set at initialization. We specifically want to exclude any param
452
+ # values set by the :source property or any default values.
453
+ # LAK:NOTE This is kind of silly, because the whole point here is that
454
+ # the values set at initialization should live as long as the resource
455
+ # but values set by default or by :source should only live for the transaction
456
+ # or so. Unfortunately, we don't have a straightforward way to manage
457
+ # the different lifetimes of this data, so we kludge it like this.
458
+ # The right-side hash wins in the merge.
459
+ options = @original_parameters.merge(:path => full_path).reject { |param, value| value.nil? }
460
+
461
+ # These should never be passed to our children.
462
+ [:parent, :ensure, :recurse, :recurselimit, :target, :alias, :source].each do |param|
463
+ options.delete(param) if options.include?(param)
464
+ end
465
+
466
+ self.class.new(options)
467
+ end
468
+
469
+ # Files handle paths specially, because they just lengthen their
470
+ # path names, rather than including the full parent's title each
471
+ # time.
472
+ def pathbuilder
473
+ # We specifically need to call the method here, so it looks
474
+ # up our parent in the catalog graph.
475
+ if parent = parent()
476
+ # We only need to behave specially when our parent is also
477
+ # a file
478
+ if parent.is_a?(self.class)
479
+ # Remove the parent file name
480
+ list = parent.pathbuilder
481
+ list.pop # remove the parent's path info
482
+ return list << self.ref
483
+ else
484
+ return super
485
+ end
486
+ else
487
+ return [self.ref]
488
+ end
489
+ end
490
+
491
+ # Should we be purging?
492
+ def purge?
493
+ @parameters.include?(:purge) and (self[:purge] == :true or self[:purge] == "true")
494
+ end
495
+
496
+ # Recursively generate a list of file resources, which will
497
+ # be used to copy remote files, manage local files, and/or make links
498
+ # to map to another directory.
499
+ def recurse
500
+ children = (self[:recurse] == :remote) ? {} : recurse_local
501
+
502
+ if self[:target]
503
+ recurse_link(children)
504
+ elsif self[:source]
505
+ recurse_remote(children)
506
+ end
507
+
508
+ # If we're purging resources, then delete any resource that isn't on the
509
+ # remote system.
510
+ mark_children_for_purging(children) if self.purge?
511
+
512
+ # REVISIT: sort_by is more efficient?
513
+ result = children.values.sort { |a, b| a[:path] <=> b[:path] }
514
+ remove_less_specific_files(result)
515
+ end
516
+
517
+ # This is to fix bug #2296, where two files recurse over the same
518
+ # set of files. It's a rare case, and when it does happen you're
519
+ # not likely to have many actual conflicts, which is good, because
520
+ # this is a pretty inefficient implementation.
521
+ def remove_less_specific_files(files)
522
+ # REVISIT: is this Windows safe? AltSeparator?
523
+ mypath = self[:path].split(::File::Separator)
524
+ other_paths = catalog.vertices.
525
+ select { |r| r.is_a?(self.class) and r[:path] != self[:path] }.
526
+ collect { |r| r[:path].split(::File::Separator) }.
527
+ select { |p| p[0,mypath.length] == mypath }
528
+
529
+ return files if other_paths.empty?
530
+
531
+ files.reject { |file|
532
+ path = file[:path].split(::File::Separator)
533
+ other_paths.any? { |p| path[0,p.length] == p }
534
+ }
535
+ end
536
+
537
+ # A simple method for determining whether we should be recursing.
538
+ def recurse?
539
+ self[:recurse] == true or self[:recurse] == :remote
540
+ end
541
+
542
+ # Recurse the target of the link.
543
+ def recurse_link(children)
544
+ perform_recursion(self[:target]).each do |meta|
545
+ if meta.relative_path == "."
546
+ self[:ensure] = :directory
547
+ next
548
+ end
549
+
550
+ children[meta.relative_path] ||= newchild(meta.relative_path)
551
+ if meta.ftype == "directory"
552
+ children[meta.relative_path][:ensure] = :directory
553
+ else
554
+ children[meta.relative_path][:ensure] = :link
555
+ children[meta.relative_path][:target] = meta.full_path
556
+ end
557
+ end
558
+ children
559
+ end
560
+
561
+ # Recurse the file itself, returning a Metadata instance for every found file.
562
+ def recurse_local
563
+ result = perform_recursion(self[:path])
564
+ return {} unless result
565
+ result.inject({}) do |hash, meta|
566
+ next hash if meta.relative_path == "."
567
+
568
+ hash[meta.relative_path] = newchild(meta.relative_path)
569
+ hash
570
+ end
571
+ end
572
+
573
+ # Recurse against our remote file.
574
+ def recurse_remote(children)
575
+ sourceselect = self[:sourceselect]
576
+
577
+ total = self[:source].collect do |source|
578
+ next unless result = perform_recursion(source)
579
+ return if top = result.find { |r| r.relative_path == "." } and top.ftype != "directory"
580
+ result.each { |data| data.source = "#{source}/#{data.relative_path}" }
581
+ break result if result and ! result.empty? and sourceselect == :first
582
+ result
583
+ end.flatten
584
+
585
+ # This only happens if we have sourceselect == :all
586
+ unless sourceselect == :first
587
+ found = []
588
+ total.reject! do |data|
589
+ result = found.include?(data.relative_path)
590
+ found << data.relative_path unless found.include?(data.relative_path)
591
+ result
592
+ end
593
+ end
594
+
595
+ total.each do |meta|
596
+ if meta.relative_path == "."
597
+ parameter(:source).metadata = meta
598
+ next
599
+ end
600
+ children[meta.relative_path] ||= newchild(meta.relative_path)
601
+ children[meta.relative_path][:source] = meta.source
602
+ children[meta.relative_path][:checksum] = :md5 if meta.ftype == "file"
603
+
604
+ children[meta.relative_path].parameter(:source).metadata = meta
605
+ end
606
+
607
+ children
608
+ end
609
+
610
+ def perform_recursion(path)
611
+ Puppet::FileServing::Metadata.indirection.search(
612
+ path,
613
+ :links => self[:links],
614
+ :recurse => (self[:recurse] == :remote ? true : self[:recurse]),
615
+ :recurselimit => self[:recurselimit],
616
+ :ignore => self[:ignore],
617
+ :checksum_type => (self[:source] || self[:content]) ? self[:checksum] : :none
618
+ )
619
+ end
620
+
621
+ # Remove any existing data. This is only used when dealing with
622
+ # links or directories.
623
+ def remove_existing(should)
624
+ return unless s = stat
625
+
626
+ self.fail "Could not back up; will not replace" unless perform_backup
627
+
628
+ unless should.to_s == "link"
629
+ return if s.ftype.to_s == should.to_s
630
+ end
631
+
632
+ case s.ftype
633
+ when "directory"
634
+ if self[:force] == :true
635
+ debug "Removing existing directory for replacement with #{should}"
636
+ FileUtils.rmtree(self[:path])
637
+ else
638
+ notice "Not removing directory; use 'force' to override"
639
+ return
640
+ end
641
+ when "link", "file"
642
+ debug "Removing existing #{s.ftype} for replacement with #{should}"
643
+ ::File.unlink(self[:path])
644
+ else
645
+ self.fail "Could not back up files of type #{s.ftype}"
646
+ end
647
+ @stat = :needs_stat
648
+ true
649
+ end
650
+
651
+ def retrieve
652
+ if source = parameter(:source)
653
+ source.copy_source_values
654
+ end
655
+ super
656
+ end
657
+
658
+ # Set the checksum, from another property. There are multiple
659
+ # properties that modify the contents of a file, and they need the
660
+ # ability to make sure that the checksum value is in sync.
661
+ def setchecksum(sum = nil)
662
+ if @parameters.include? :checksum
663
+ if sum
664
+ @parameters[:checksum].checksum = sum
665
+ else
666
+ # If they didn't pass in a sum, then tell checksum to
667
+ # figure it out.
668
+ currentvalue = @parameters[:checksum].retrieve
669
+ @parameters[:checksum].checksum = currentvalue
670
+ end
671
+ end
672
+ end
673
+
674
+ # Should this thing be a normal file? This is a relatively complex
675
+ # way of determining whether we're trying to create a normal file,
676
+ # and it's here so that the logic isn't visible in the content property.
677
+ def should_be_file?
678
+ return true if self[:ensure] == :file
679
+
680
+ # I.e., it's set to something like "directory"
681
+ return false if e = self[:ensure] and e != :present
682
+
683
+ # The user doesn't really care, apparently
684
+ if self[:ensure] == :present
685
+ return true unless s = stat
686
+ return(s.ftype == "file" ? true : false)
687
+ end
688
+
689
+ # If we've gotten here, then :ensure isn't set
690
+ return true if self[:content]
691
+ return true if stat and stat.ftype == "file"
692
+ false
693
+ end
694
+
695
+ # Stat our file. Depending on the value of the 'links' attribute, we
696
+ # use either 'stat' or 'lstat', and we expect the properties to use the
697
+ # resulting stat object accordingly (mostly by testing the 'ftype'
698
+ # value).
699
+ #
700
+ # We use the initial value :needs_stat to ensure we only stat the file once,
701
+ # but can also keep track of a failed stat (@stat == nil). This also allows
702
+ # us to re-stat on demand by setting @stat = :needs_stat.
703
+ def stat
704
+ return @stat unless @stat == :needs_stat
705
+
706
+ method = :stat
707
+
708
+ # Files are the only types that support links
709
+ if (self.class.name == :file and self[:links] != :follow) or self.class.name == :tidy
710
+ method = :lstat
711
+ end
712
+
713
+ @stat = begin
714
+ ::File.send(method, self[:path])
715
+ rescue Errno::ENOENT => error
716
+ nil
717
+ rescue Errno::ENOTDIR => error
718
+ nil
719
+ rescue Errno::EACCES => error
720
+ warning "Could not stat; permission denied"
721
+ nil
722
+ end
723
+ end
724
+
725
+ # We have to hack this just a little bit, because otherwise we'll get
726
+ # an error when the target and the contents are created as properties on
727
+ # the far side.
728
+ def to_trans(retrieve = true)
729
+ obj = super
730
+ obj.delete(:target) if obj[:target] == :notlink
731
+ obj
732
+ end
733
+
734
+ # Write out the file. Requires the property name for logging.
735
+ # Write will be done by the content property, along with checksum computation
736
+ def write(property)
737
+ remove_existing(:file)
738
+
739
+ use_temporary_file = write_temporary_file?
740
+ if use_temporary_file
741
+ path = "#{self[:path]}.puppettmp_#{rand(10000)}"
742
+ path = "#{self[:path]}.puppettmp_#{rand(10000)}" while ::File.exists?(path) or ::File.symlink?(path)
743
+ else
744
+ path = self[:path]
745
+ end
746
+
747
+ mode = self.should(:mode) # might be nil
748
+ umask = mode ? 000 : 022
749
+ mode_int = mode ? symbolic_mode_to_int(mode, 0644) : nil
750
+
751
+ content_checksum = Puppet::Util.withumask(umask) { ::File.open(path, 'wb', mode_int ) { |f| write_content(f) } }
752
+
753
+ # And put our new file in place
754
+ if use_temporary_file # This is only not true when our file is empty.
755
+ begin
756
+ fail_if_checksum_is_wrong(path, content_checksum) if validate_checksum?
757
+ ::File.rename(path, self[:path])
758
+ rescue => detail
759
+ fail "Could not rename temporary file #{path} to #{self[:path]}: #{detail}"
760
+ ensure
761
+ # Make sure the created file gets removed
762
+ ::File.unlink(path) if FileTest.exists?(path)
763
+ end
764
+ end
765
+
766
+ # make sure all of the modes are actually correct
767
+ property_fix
768
+
769
+ end
770
+
771
+ private
772
+
773
+ # Should we validate the checksum of the file we're writing?
774
+ def validate_checksum?
775
+ self[:checksum] !~ /time/
776
+ end
777
+
778
+ # Make sure the file we wrote out is what we think it is.
779
+ def fail_if_checksum_is_wrong(path, content_checksum)
780
+ newsum = parameter(:checksum).sum_file(path)
781
+ return if [:absent, nil, content_checksum].include?(newsum)
782
+
783
+ self.fail "File written to disk did not match checksum; discarding changes (#{content_checksum} vs #{newsum})"
784
+ end
785
+
786
+ # write the current content. Note that if there is no content property
787
+ # simply opening the file with 'w' as done in write is enough to truncate
788
+ # or write an empty length file.
789
+ def write_content(file)
790
+ (content = property(:content)) && content.write(file)
791
+ end
792
+
793
+ private
794
+
795
+ def write_temporary_file?
796
+ # unfortunately we don't know the source file size before fetching it
797
+ # so let's assume the file won't be empty
798
+ (c = property(:content) and c.length) || (s = @parameters[:source] and 1)
799
+ end
800
+
801
+ # There are some cases where all of the work does not get done on
802
+ # file creation/modification, so we have to do some extra checking.
803
+ def property_fix
804
+ properties.each do |thing|
805
+ next unless [:mode, :owner, :group, :seluser, :selrole, :seltype, :selrange].include?(thing.name)
806
+
807
+ # Make sure we get a new stat objct
808
+ @stat = :needs_stat
809
+ currentvalue = thing.retrieve
810
+ thing.sync unless thing.safe_insync?(currentvalue)
811
+ end
812
+ end
813
+ end
814
+
815
+ # We put all of the properties in separate files, because there are so many
816
+ # of them. The order these are loaded is important, because it determines
817
+ # the order they are in the property lit.
818
+ require 'puppet/type/file/checksum'
819
+ require 'puppet/type/file/content' # can create the file
820
+ require 'puppet/type/file/source' # can create the file
821
+ require 'puppet/type/file/target' # creates a different type of file
822
+ require 'puppet/type/file/ensure' # can create the file
823
+ require 'puppet/type/file/owner'
824
+ require 'puppet/type/file/group'
825
+ require 'puppet/type/file/mode'
826
+ require 'puppet/type/file/type'
827
+ require 'puppet/type/file/selcontext' # SELinux file context
828
+ require 'puppet/type/file/ctime'
829
+ require 'puppet/type/file/mtime'