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,49 @@
1
+ require 'puppet/util/instance_loader'
2
+
3
+ # A simple mechanism for loading and returning reports.
4
+ class Puppet::Reports
5
+ extend Puppet::Util::ClassGen
6
+ extend Puppet::Util::InstanceLoader
7
+
8
+ # Set up autoloading and retrieving of reports.
9
+ instance_load :report, 'puppet/reports'
10
+
11
+ class << self
12
+ attr_reader :hooks
13
+ end
14
+
15
+ # Add a new report type.
16
+ def self.register_report(name, options = {}, &block)
17
+ name = name.intern
18
+
19
+ mod = genmodule(name, :extend => Puppet::Util::Docs, :hash => instance_hash(:report), :block => block)
20
+
21
+ mod.useyaml = true if options[:useyaml]
22
+
23
+ mod.send(:define_method, :report_name) do
24
+ name
25
+ end
26
+ end
27
+
28
+ # Collect the docs for all of our reports.
29
+ def self.reportdocs
30
+ docs = ""
31
+
32
+ # Use this method so they all get loaded
33
+ instance_loader(:report).loadall
34
+ loaded_instances(:report).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
35
+ mod = self.report(name)
36
+ docs += "#{name}\n#{"-" * name.to_s.length}\n"
37
+
38
+ docs += Puppet::Util::Docs.scrub(mod.doc) + "\n\n"
39
+ end
40
+
41
+ docs
42
+ end
43
+
44
+ # List each of the reports.
45
+ def self.reports
46
+ instance_loader(:report).loadall
47
+ loaded_instances(:report)
48
+ end
49
+ end
@@ -0,0 +1,661 @@
1
+ require 'puppet/node'
2
+ require 'puppet/indirector'
3
+ require 'puppet/simple_graph'
4
+ require 'puppet/transaction'
5
+
6
+ require 'puppet/util/pson'
7
+
8
+ require 'puppet/util/tagging'
9
+
10
+ # This class models a node catalog. It is the thing
11
+ # meant to be passed from server to client, and it contains all
12
+ # of the information in the catalog, including the resources
13
+ # and the relationships between them.
14
+ class Puppet::Resource::Catalog < Puppet::SimpleGraph
15
+ class DuplicateResourceError < Puppet::Error; end
16
+
17
+ extend Puppet::Indirector
18
+ indirects :catalog, :terminus_setting => :catalog_terminus
19
+
20
+ include Puppet::Util::Tagging
21
+ extend Puppet::Util::Pson
22
+
23
+ # The host name this is a catalog for.
24
+ attr_accessor :name
25
+
26
+ # The catalog version. Used for testing whether a catalog
27
+ # is up to date.
28
+ attr_accessor :version
29
+
30
+ # How long this catalog took to retrieve. Used for reporting stats.
31
+ attr_accessor :retrieval_duration
32
+
33
+ # Whether this is a host catalog, which behaves very differently.
34
+ # In particular, reports are sent, graphs are made, and state is
35
+ # stored in the state database. If this is set incorrectly, then you often
36
+ # end up in infinite loops, because catalogs are used to make things
37
+ # that the host catalog needs.
38
+ attr_accessor :host_config
39
+
40
+ # Whether this catalog was retrieved from the cache, which affects
41
+ # whether it is written back out again.
42
+ attr_accessor :from_cache
43
+
44
+ # Some metadata to help us compile and generally respond to the current state.
45
+ attr_accessor :client_version, :server_version
46
+
47
+ # Add classes to our class list.
48
+ def add_class(*classes)
49
+ classes.each do |klass|
50
+ @classes << klass
51
+ end
52
+
53
+ # Add the class names as tags, too.
54
+ tag(*classes)
55
+ end
56
+
57
+ def title_key_for_ref( ref )
58
+ ref =~ /^([-\w:]+)\[(.*)\]$/m
59
+ [$1, $2]
60
+ end
61
+
62
+ # Add a resource to our graph and to our resource table.
63
+ # This is actually a relatively complicated method, because it handles multiple
64
+ # aspects of Catalog behaviour:
65
+ # * Add the resource to the resource table
66
+ # * Add the resource to the resource graph
67
+ # * Add the resource to the relationship graph
68
+ # * Add any aliases that make sense for the resource (e.g., name != title)
69
+ def add_resource(*resource)
70
+ add_resource(*resource[0..-2]) if resource.length > 1
71
+ resource = resource.pop
72
+ raise ArgumentError, "Can only add objects that respond to :ref, not instances of #{resource.class}" unless resource.respond_to?(:ref)
73
+ fail_on_duplicate_type_and_title(resource)
74
+ title_key = title_key_for_ref(resource.ref)
75
+
76
+ @transient_resources << resource if applying?
77
+ @resource_table[title_key] = resource
78
+
79
+ # If the name and title differ, set up an alias
80
+
81
+ if resource.respond_to?(:name) and resource.respond_to?(:title) and resource.respond_to?(:isomorphic?) and resource.name != resource.title
82
+ self.alias(resource, resource.uniqueness_key) if resource.isomorphic?
83
+ end
84
+
85
+ resource.catalog = self if resource.respond_to?(:catalog=)
86
+ add_vertex(resource)
87
+ @relationship_graph.add_vertex(resource) if @relationship_graph
88
+ end
89
+
90
+ # Create an alias for a resource.
91
+ def alias(resource, key)
92
+ resource.ref =~ /^(.+)\[/
93
+ class_name = $1 || resource.class.name
94
+
95
+ newref = [class_name, key].flatten
96
+
97
+ if key.is_a? String
98
+ ref_string = "#{class_name}[#{key}]"
99
+ return if ref_string == resource.ref
100
+ end
101
+
102
+ # LAK:NOTE It's important that we directly compare the references,
103
+ # because sometimes an alias is created before the resource is
104
+ # added to the catalog, so comparing inside the below if block
105
+ # isn't sufficient.
106
+ if existing = @resource_table[newref]
107
+ return if existing == resource
108
+ resource_declaration = " at #{resource.file}:#{resource.line}" if resource.file and resource.line
109
+ existing_declaration = " at #{existing.file}:#{existing.line}" if existing.file and existing.line
110
+ msg = "Cannot alias #{resource.ref} to #{key.inspect}#{resource_declaration}; resource #{newref.inspect} already declared#{existing_declaration}"
111
+ raise ArgumentError, msg
112
+ end
113
+ @resource_table[newref] = resource
114
+ @aliases[resource.ref] ||= []
115
+ @aliases[resource.ref] << newref
116
+ end
117
+
118
+ # Apply our catalog to the local host. Valid options
119
+ # are:
120
+ # :tags - set the tags that restrict what resources run
121
+ # during the transaction
122
+ # :ignoreschedules - tell the transaction to ignore schedules
123
+ # when determining the resources to run
124
+ def apply(options = {})
125
+ @applying = true
126
+
127
+ Puppet::Util::Storage.load if host_config?
128
+
129
+ transaction = Puppet::Transaction.new(self, options[:report])
130
+ register_report = options[:report].nil?
131
+
132
+ transaction.tags = options[:tags] if options[:tags]
133
+ transaction.ignoreschedules = true if options[:ignoreschedules]
134
+ transaction.for_network_device = options[:network_device]
135
+
136
+ transaction.add_times :config_retrieval => self.retrieval_duration || 0
137
+
138
+ begin
139
+ Puppet::Util::Log.newdestination(transaction.report) if register_report
140
+ begin
141
+ transaction.evaluate
142
+ ensure
143
+ Puppet::Util::Log.close(transaction.report) if register_report
144
+ end
145
+ rescue Puppet::Error => detail
146
+ puts detail.backtrace if Puppet[:trace]
147
+ Puppet.err "Could not apply complete catalog: #{detail}"
148
+ rescue => detail
149
+ puts detail.backtrace if Puppet[:trace]
150
+ Puppet.err "Got an uncaught exception of type #{detail.class}: #{detail}"
151
+ ensure
152
+ # Don't try to store state unless we're a host config
153
+ # too recursive.
154
+ Puppet::Util::Storage.store if host_config?
155
+ end
156
+
157
+ yield transaction if block_given?
158
+
159
+ return transaction
160
+ ensure
161
+ @applying = false
162
+ end
163
+
164
+ # Are we in the middle of applying the catalog?
165
+ def applying?
166
+ @applying
167
+ end
168
+
169
+ def clear(remove_resources = true)
170
+ super()
171
+ # We have to do this so that the resources clean themselves up.
172
+ @resource_table.values.each { |resource| resource.remove } if remove_resources
173
+ @resource_table.clear
174
+
175
+ if @relationship_graph
176
+ @relationship_graph.clear
177
+ @relationship_graph = nil
178
+ end
179
+ end
180
+
181
+ def classes
182
+ @classes.dup
183
+ end
184
+
185
+ # Create a new resource and register it in the catalog.
186
+ def create_resource(type, options)
187
+ unless klass = Puppet::Type.type(type)
188
+ raise ArgumentError, "Unknown resource type #{type}"
189
+ end
190
+ return unless resource = klass.new(options)
191
+
192
+ add_resource(resource)
193
+ resource
194
+ end
195
+
196
+ # Turn our catalog graph into an old-style tree of TransObjects and TransBuckets.
197
+ # LAK:NOTE(20081211): This is a pre-0.25 backward compatibility method.
198
+ # It can be removed as soon as xmlrpc is killed.
199
+ def extract
200
+ top = nil
201
+ current = nil
202
+ buckets = {}
203
+
204
+ unless main = resource(:stage, "main")
205
+ raise Puppet::DevError, "Could not find 'main' stage; cannot generate catalog"
206
+ end
207
+
208
+ if stages = vertices.find_all { |v| v.type == "Stage" and v.title != "main" } and ! stages.empty?
209
+ Puppet.warning "Stages are not supported by 0.24.x client; stage(s) #{stages.collect { |s| s.to_s }.join(', ') } will be ignored"
210
+ end
211
+
212
+ bucket = nil
213
+ walk(main, :out) do |source, target|
214
+ # The sources are always non-builtins.
215
+ unless tmp = buckets[source.to_s]
216
+ if tmp = buckets[source.to_s] = source.to_trans
217
+ bucket = tmp
218
+ else
219
+ # This is because virtual resources return nil. If a virtual
220
+ # container resource contains realized resources, we still need to get
221
+ # to them. So, we keep a reference to the last valid bucket
222
+ # we returned and use that if the container resource is virtual.
223
+ end
224
+ end
225
+ bucket = tmp || bucket
226
+ if child = target.to_trans
227
+ raise "No bucket created for #{source}" unless bucket
228
+ bucket.push child
229
+
230
+ # It's important that we keep a reference to any TransBuckets we've created, so
231
+ # we don't create multiple buckets for children.
232
+ buckets[target.to_s] = child unless target.builtin?
233
+ end
234
+ end
235
+
236
+ # Retrieve the bucket for the top-level scope and set the appropriate metadata.
237
+ unless result = buckets[main.to_s]
238
+ # This only happens when the catalog is entirely empty.
239
+ result = buckets[main.to_s] = main.to_trans
240
+ end
241
+
242
+ result.classes = classes
243
+
244
+ # Clear the cache to encourage the GC
245
+ buckets.clear
246
+ result
247
+ end
248
+
249
+ # Make sure all of our resources are "finished".
250
+ def finalize
251
+ make_default_resources
252
+
253
+ @resource_table.values.each { |resource| resource.finish }
254
+
255
+ write_graph(:resources)
256
+ end
257
+
258
+ def host_config?
259
+ host_config
260
+ end
261
+
262
+ def initialize(name = nil)
263
+ super()
264
+ @name = name if name
265
+ @classes = []
266
+ @resource_table = {}
267
+ @transient_resources = []
268
+ @applying = false
269
+ @relationship_graph = nil
270
+
271
+ @host_config = true
272
+
273
+ @aliases = {}
274
+
275
+ if block_given?
276
+ yield(self)
277
+ finalize
278
+ end
279
+ end
280
+
281
+ # Make the default objects necessary for function.
282
+ def make_default_resources
283
+ # We have to add the resources to the catalog, or else they won't get cleaned up after
284
+ # the transaction.
285
+
286
+ # First create the default scheduling objects
287
+ Puppet::Type.type(:schedule).mkdefaultschedules.each { |res| add_resource(res) unless resource(res.ref) }
288
+
289
+ # And filebuckets
290
+ if bucket = Puppet::Type.type(:filebucket).mkdefaultbucket
291
+ add_resource(bucket) unless resource(bucket.ref)
292
+ end
293
+ end
294
+
295
+ # Create a graph of all of the relationships in our catalog.
296
+ def relationship_graph
297
+ unless @relationship_graph
298
+ # It's important that we assign the graph immediately, because
299
+ # the debug messages below use the relationships in the
300
+ # relationship graph to determine the path to the resources
301
+ # spitting out the messages. If this is not set,
302
+ # then we get into an infinite loop.
303
+ @relationship_graph = Puppet::SimpleGraph.new
304
+
305
+ # First create the dependency graph
306
+ self.vertices.each do |vertex|
307
+ @relationship_graph.add_vertex vertex
308
+ vertex.builddepends.each do |edge|
309
+ @relationship_graph.add_edge(edge)
310
+ end
311
+ end
312
+
313
+ # Lastly, add in any autorequires
314
+ @relationship_graph.vertices.each do |vertex|
315
+ vertex.autorequire(self).each do |edge|
316
+ unless @relationship_graph.edge?(edge.source, edge.target) # don't let automatic relationships conflict with manual ones.
317
+ unless @relationship_graph.edge?(edge.target, edge.source)
318
+ vertex.debug "Autorequiring #{edge.source}"
319
+ @relationship_graph.add_edge(edge)
320
+ else
321
+ vertex.debug "Skipping automatic relationship with #{(edge.source == vertex ? edge.target : edge.source)}"
322
+ end
323
+ end
324
+ end
325
+ end
326
+ @relationship_graph.write_graph(:relationships) if host_config?
327
+
328
+ # Then splice in the container information
329
+ splice!(@relationship_graph)
330
+
331
+ @relationship_graph.write_graph(:expanded_relationships) if host_config?
332
+ end
333
+ @relationship_graph
334
+ end
335
+
336
+ # Impose our container information on another graph by using it
337
+ # to replace any container vertices X with a pair of verticies
338
+ # { admissible_X and completed_X } such that that
339
+ #
340
+ # 0) completed_X depends on admissible_X
341
+ # 1) contents of X each depend on admissible_X
342
+ # 2) completed_X depends on each on the contents of X
343
+ # 3) everything which depended on X depens on completed_X
344
+ # 4) admissible_X depends on everything X depended on
345
+ # 5) the containers and their edges must be removed
346
+ #
347
+ # Note that this requires attention to the possible case of containers
348
+ # which contain or depend on other containers, but has the advantage
349
+ # that the number of new edges created scales linearly with the number
350
+ # of contained verticies regardless of how containers are related;
351
+ # alternatives such as replacing container-edges with content-edges
352
+ # scale as the product of the number of external dependences, which is
353
+ # to say geometrically in the case of nested / chained containers.
354
+ #
355
+ Default_label = { :callback => :refresh, :event => :ALL_EVENTS }
356
+ def splice!(other)
357
+ stage_class = Puppet::Type.type(:stage)
358
+ whit_class = Puppet::Type.type(:whit)
359
+ component_class = Puppet::Type.type(:component)
360
+ containers = vertices.find_all { |v| (v.is_a?(component_class) or v.is_a?(stage_class)) and vertex?(v) }
361
+ #
362
+ # These two hashes comprise the aforementioned attention to the possible
363
+ # case of containers that contain / depend on other containers; they map
364
+ # containers to their sentinels but pass other verticies through. Thus we
365
+ # can "do the right thing" for references to other verticies that may or
366
+ # may not be containers.
367
+ #
368
+ admissible = Hash.new { |h,k| k }
369
+ completed = Hash.new { |h,k| k }
370
+ containers.each { |x|
371
+ admissible[x] = whit_class.new(:name => "admissible_#{x.ref}", :catalog => self)
372
+ completed[x] = whit_class.new(:name => "completed_#{x.ref}", :catalog => self)
373
+ }
374
+ #
375
+ # Implement the six requierments listed above
376
+ #
377
+ containers.each { |x|
378
+ contents = adjacent(x, :direction => :out)
379
+ other.add_edge(admissible[x],completed[x]) if contents.empty? # (0)
380
+ contents.each { |v|
381
+ other.add_edge(admissible[x],admissible[v],Default_label) # (1)
382
+ other.add_edge(completed[v], completed[x], Default_label) # (2)
383
+ }
384
+ # (3) & (5)
385
+ other.adjacent(x,:direction => :in,:type => :edges).each { |e|
386
+ other.add_edge(completed[e.source],admissible[x],e.label)
387
+ other.remove_edge! e
388
+ }
389
+ # (4) & (5)
390
+ other.adjacent(x,:direction => :out,:type => :edges).each { |e|
391
+ other.add_edge(completed[x],admissible[e.target],e.label)
392
+ other.remove_edge! e
393
+ }
394
+ }
395
+ containers.each { |x| other.remove_vertex! x } # (5)
396
+ end
397
+
398
+ # Remove the resource from our catalog. Notice that we also call
399
+ # 'remove' on the resource, at least until resource classes no longer maintain
400
+ # references to the resource instances.
401
+ def remove_resource(*resources)
402
+ resources.each do |resource|
403
+ title_key = title_key_for_ref(resource.ref)
404
+ @resource_table.delete(title_key)
405
+ if aliases = @aliases[resource.ref]
406
+ aliases.each { |res_alias| @resource_table.delete(res_alias) }
407
+ @aliases.delete(resource.ref)
408
+ end
409
+ remove_vertex!(resource) if vertex?(resource)
410
+ @relationship_graph.remove_vertex!(resource) if @relationship_graph and @relationship_graph.vertex?(resource)
411
+ resource.remove
412
+ end
413
+ end
414
+
415
+ # Look a resource up by its reference (e.g., File[/etc/passwd]).
416
+ def resource(type, title = nil)
417
+ # Always create a resource reference, so that it always canonizes how we
418
+ # are referring to them.
419
+ if title
420
+ res = Puppet::Resource.new(type, title)
421
+ else
422
+ # If they didn't provide a title, then we expect the first
423
+ # argument to be of the form 'Class[name]', which our
424
+ # Reference class canonizes for us.
425
+ res = Puppet::Resource.new(nil, type)
426
+ end
427
+ title_key = [res.type, res.title.to_s]
428
+ uniqueness_key = [res.type, res.uniqueness_key].flatten
429
+ @resource_table[title_key] || @resource_table[uniqueness_key]
430
+ end
431
+
432
+ def resource_refs
433
+ resource_keys.collect{ |type, name| name.is_a?( String ) ? "#{type}[#{name}]" : nil}.compact
434
+ end
435
+
436
+ def resource_keys
437
+ @resource_table.keys
438
+ end
439
+
440
+ def resources
441
+ @resource_table.values.uniq
442
+ end
443
+
444
+ def self.from_pson(data)
445
+ result = new(data['name'])
446
+
447
+ if tags = data['tags']
448
+ result.tag(*tags)
449
+ end
450
+
451
+ if version = data['version']
452
+ result.version = version
453
+ end
454
+
455
+ if resources = data['resources']
456
+ resources = PSON.parse(resources) if resources.is_a?(String)
457
+ resources.each do |res|
458
+ resource_from_pson(result, res)
459
+ end
460
+ end
461
+
462
+ if edges = data['edges']
463
+ edges = PSON.parse(edges) if edges.is_a?(String)
464
+ edges.each do |edge|
465
+ edge_from_pson(result, edge)
466
+ end
467
+ end
468
+
469
+ if classes = data['classes']
470
+ result.add_class(*classes)
471
+ end
472
+
473
+ result
474
+ end
475
+
476
+ def self.edge_from_pson(result, edge)
477
+ # If no type information was presented, we manually find
478
+ # the class.
479
+ edge = Puppet::Relationship.from_pson(edge) if edge.is_a?(Hash)
480
+ unless source = result.resource(edge.source)
481
+ raise ArgumentError, "Could not convert from pson: Could not find relationship source #{edge.source.inspect}"
482
+ end
483
+ edge.source = source
484
+
485
+ unless target = result.resource(edge.target)
486
+ raise ArgumentError, "Could not convert from pson: Could not find relationship target #{edge.target.inspect}"
487
+ end
488
+ edge.target = target
489
+
490
+ result.add_edge(edge)
491
+ end
492
+
493
+ def self.resource_from_pson(result, res)
494
+ res = Puppet::Resource.from_pson(res) if res.is_a? Hash
495
+ result.add_resource(res)
496
+ end
497
+
498
+ PSON.register_document_type('Catalog',self)
499
+ def to_pson_data_hash
500
+ {
501
+ 'document_type' => 'Catalog',
502
+ 'data' => {
503
+ 'tags' => tags,
504
+ 'name' => name,
505
+ 'version' => version,
506
+ 'resources' => vertices.collect { |v| v.to_pson_data_hash },
507
+ 'edges' => edges. collect { |e| e.to_pson_data_hash },
508
+ 'classes' => classes
509
+ },
510
+ 'metadata' => {
511
+ 'api_version' => 1
512
+ }
513
+ }
514
+ end
515
+
516
+ def to_pson(*args)
517
+ to_pson_data_hash.to_pson(*args)
518
+ end
519
+
520
+ # Convert our catalog into a RAL catalog.
521
+ def to_ral
522
+ to_catalog :to_ral
523
+ end
524
+
525
+ # Convert our catalog into a catalog of Puppet::Resource instances.
526
+ def to_resource
527
+ to_catalog :to_resource
528
+ end
529
+
530
+ # filter out the catalog, applying +block+ to each resource.
531
+ # If the block result is false, the resource will
532
+ # be kept otherwise it will be skipped
533
+ def filter(&block)
534
+ to_catalog :to_resource, &block
535
+ end
536
+
537
+ # Store the classes in the classfile.
538
+ def write_class_file
539
+ ::File.open(Puppet[:classfile], "w") do |f|
540
+ f.puts classes.join("\n")
541
+ end
542
+ rescue => detail
543
+ Puppet.err "Could not create class file #{Puppet[:classfile]}: #{detail}"
544
+ end
545
+
546
+ # Store the list of resources we manage
547
+ def write_resource_file
548
+ ::File.open(Puppet[:resourcefile], "w") do |f|
549
+ to_print = resources.map do |resource|
550
+ next unless resource.managed?
551
+ if resource.name_var
552
+ "#{resource.type}[#{resource[resource.name_var]}]"
553
+ else
554
+ "#{resource.ref.downcase}"
555
+ end
556
+ end.compact
557
+ f.puts to_print.join("\n")
558
+ end
559
+ rescue => detail
560
+ Puppet.err "Could not create resource file #{Puppet[:resourcefile]}: #{detail}"
561
+ end
562
+
563
+ # Produce the graph files if requested.
564
+ def write_graph(name)
565
+ # We only want to graph the main host catalog.
566
+ return unless host_config?
567
+
568
+ super
569
+ end
570
+
571
+ private
572
+
573
+ # Verify that the given resource isn't declared elsewhere.
574
+ def fail_on_duplicate_type_and_title(resource)
575
+ # Short-curcuit the common case,
576
+ return unless existing_resource = @resource_table[title_key_for_ref(resource.ref)]
577
+
578
+ # If we've gotten this far, it's a real conflict
579
+ msg = "Duplicate declaration: #{resource.ref} is already declared"
580
+
581
+ msg << " in file #{existing_resource.file} at line #{existing_resource.line}" if existing_resource.file and existing_resource.line
582
+
583
+ msg << "; cannot redeclare" if resource.line or resource.file
584
+
585
+ raise DuplicateResourceError.new(msg)
586
+ end
587
+
588
+ # An abstracted method for converting one catalog into another type of catalog.
589
+ # This pretty much just converts all of the resources from one class to another, using
590
+ # a conversion method.
591
+ def to_catalog(convert)
592
+ result = self.class.new(self.name)
593
+
594
+ result.version = self.version
595
+
596
+ map = {}
597
+ vertices.each do |resource|
598
+ next if virtual_not_exported?(resource)
599
+ next if block_given? and yield resource
600
+
601
+ #This is hackity hack for 1094
602
+ #Aliases aren't working in the ral catalog because the current instance of the resource
603
+ #has a reference to the catalog being converted. . . So, give it a reference to the new one
604
+ #problem solved. . .
605
+ if resource.class == Puppet::Resource
606
+ resource = resource.dup
607
+ resource.catalog = result
608
+ elsif resource.is_a?(Puppet::TransObject)
609
+ resource = resource.dup
610
+ resource.catalog = result
611
+ elsif resource.is_a?(Puppet::Parser::Resource)
612
+ resource = resource.to_resource
613
+ resource.catalog = result
614
+ end
615
+
616
+ if resource.is_a?(Puppet::Resource) and convert.to_s == "to_resource"
617
+ newres = resource
618
+ else
619
+ newres = resource.send(convert)
620
+ end
621
+
622
+ # We can't guarantee that resources don't munge their names
623
+ # (like files do with trailing slashes), so we have to keep track
624
+ # of what a resource got converted to.
625
+ map[resource.ref] = newres
626
+
627
+ result.add_resource newres
628
+ end
629
+
630
+ message = convert.to_s.gsub "_", " "
631
+ edges.each do |edge|
632
+ # Skip edges between virtual resources.
633
+ next if virtual_not_exported?(edge.source)
634
+ next if block_given? and yield edge.source
635
+
636
+ next if virtual_not_exported?(edge.target)
637
+ next if block_given? and yield edge.target
638
+
639
+ unless source = map[edge.source.ref]
640
+ raise Puppet::DevError, "Could not find resource #{edge.source.ref} when converting #{message} resources"
641
+ end
642
+
643
+ unless target = map[edge.target.ref]
644
+ raise Puppet::DevError, "Could not find resource #{edge.target.ref} when converting #{message} resources"
645
+ end
646
+
647
+ result.add_edge(source, target, edge.label)
648
+ end
649
+
650
+ map.clear
651
+
652
+ result.add_class(*self.classes)
653
+ result.tag(*self.tags)
654
+
655
+ result
656
+ end
657
+
658
+ def virtual_not_exported?(resource)
659
+ resource.respond_to?(:virtual?) and resource.virtual? and (resource.respond_to?(:exported?) and not resource.exported?)
660
+ end
661
+ end