bolt 0.0.1 → 0.5.0

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

Potentially problematic release.


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

Files changed (1291) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +33 -0
  3. data/.gitmodules +12 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +61 -0
  6. data/.travis.yml +18 -0
  7. data/Gemfile +9 -0
  8. data/INSTALL.md +70 -0
  9. data/LICENSE +201 -0
  10. data/README.md +372 -0
  11. data/Rakefile +27 -0
  12. data/Vagrantfile +13 -0
  13. data/appveyor.yml +29 -0
  14. data/bolt.gemspec +50 -0
  15. data/docs/writing_tasks_and_plans.pdf +0 -0
  16. data/exe/bolt +15 -0
  17. data/lib/bolt.rb +13 -0
  18. data/lib/bolt/cli.rb +409 -0
  19. data/lib/bolt/executor.rb +71 -0
  20. data/lib/bolt/node.rb +79 -0
  21. data/lib/bolt/node/formatter.rb +15 -0
  22. data/lib/bolt/node/orch.rb +118 -0
  23. data/lib/bolt/node/result.rb +110 -0
  24. data/lib/bolt/node/ssh.rb +145 -0
  25. data/lib/bolt/node/winrm.rb +237 -0
  26. data/lib/bolt/node_uri.rb +42 -0
  27. data/lib/bolt/result.rb +139 -0
  28. data/lib/bolt/version.rb +3 -0
  29. data/metadata.json +13 -0
  30. data/tasks/init.json +3 -0
  31. data/tasks/init.rb +44 -0
  32. data/ux/bolt-CLI-spec.md +186 -0
  33. data/vendored/facter/lib/facter.rb +261 -0
  34. data/vendored/facter/lib/facter/Cfkey.rb +42 -0
  35. data/vendored/facter/lib/facter/application.rb +206 -0
  36. data/vendored/facter/lib/facter/architecture.rb +50 -0
  37. data/vendored/facter/lib/facter/augeasversion.rb +28 -0
  38. data/vendored/facter/lib/facter/blockdevices.rb +105 -0
  39. data/vendored/facter/lib/facter/core/aggregate.rb +220 -0
  40. data/vendored/facter/lib/facter/core/directed_graph.rb +46 -0
  41. data/vendored/facter/lib/facter/core/execution.rb +123 -0
  42. data/vendored/facter/lib/facter/core/execution/base.rb +81 -0
  43. data/vendored/facter/lib/facter/core/execution/posix.rb +50 -0
  44. data/vendored/facter/lib/facter/core/execution/windows.rb +57 -0
  45. data/vendored/facter/lib/facter/core/logging.rb +197 -0
  46. data/vendored/facter/lib/facter/core/resolvable.rb +94 -0
  47. data/vendored/facter/lib/facter/core/suitable.rb +113 -0
  48. data/vendored/facter/lib/facter/dhcp_servers.rb +45 -0
  49. data/vendored/facter/lib/facter/domain.rb +99 -0
  50. data/vendored/facter/lib/facter/ec2.rb +68 -0
  51. data/vendored/facter/lib/facter/ec2/rest.rb +137 -0
  52. data/vendored/facter/lib/facter/facterversion.rb +15 -0
  53. data/vendored/facter/lib/facter/filesystems.rb +45 -0
  54. data/vendored/facter/lib/facter/fqdn.rb +24 -0
  55. data/vendored/facter/lib/facter/gce.rb +16 -0
  56. data/vendored/facter/lib/facter/gce/metadata.rb +87 -0
  57. data/vendored/facter/lib/facter/gid.rb +25 -0
  58. data/vendored/facter/lib/facter/hardwareisa.rb +20 -0
  59. data/vendored/facter/lib/facter/hardwaremodel.rb +67 -0
  60. data/vendored/facter/lib/facter/hostname.rb +31 -0
  61. data/vendored/facter/lib/facter/id.rb +21 -0
  62. data/vendored/facter/lib/facter/interfaces.rb +58 -0
  63. data/vendored/facter/lib/facter/ipaddress.rb +169 -0
  64. data/vendored/facter/lib/facter/ipaddress6.rb +82 -0
  65. data/vendored/facter/lib/facter/iphostnumber.rb +29 -0
  66. data/vendored/facter/lib/facter/kernel.rb +22 -0
  67. data/vendored/facter/lib/facter/kernelmajversion.rb +23 -0
  68. data/vendored/facter/lib/facter/kernelrelease.rb +45 -0
  69. data/vendored/facter/lib/facter/kernelversion.rb +22 -0
  70. data/vendored/facter/lib/facter/ldom.rb +51 -0
  71. data/vendored/facter/lib/facter/lsbdistcodename.rb +20 -0
  72. data/vendored/facter/lib/facter/lsbdistdescription.rb +21 -0
  73. data/vendored/facter/lib/facter/lsbdistid.rb +20 -0
  74. data/vendored/facter/lib/facter/lsbdistrelease.rb +20 -0
  75. data/vendored/facter/lib/facter/lsbmajdistrelease.rb +22 -0
  76. data/vendored/facter/lib/facter/lsbminordistrelease.rb +22 -0
  77. data/vendored/facter/lib/facter/lsbrelease.rb +20 -0
  78. data/vendored/facter/lib/facter/macaddress.rb +99 -0
  79. data/vendored/facter/lib/facter/macosx.rb +56 -0
  80. data/vendored/facter/lib/facter/manufacturer.rb +68 -0
  81. data/vendored/facter/lib/facter/memory.rb +168 -0
  82. data/vendored/facter/lib/facter/netmask.rb +43 -0
  83. data/vendored/facter/lib/facter/network.rb +20 -0
  84. data/vendored/facter/lib/facter/operatingsystem.rb +24 -0
  85. data/vendored/facter/lib/facter/operatingsystem/base.rb +61 -0
  86. data/vendored/facter/lib/facter/operatingsystem/cumuluslinux.rb +27 -0
  87. data/vendored/facter/lib/facter/operatingsystem/implementation.rb +33 -0
  88. data/vendored/facter/lib/facter/operatingsystem/linux.rb +484 -0
  89. data/vendored/facter/lib/facter/operatingsystem/osreleaselinux.rb +28 -0
  90. data/vendored/facter/lib/facter/operatingsystem/sunos.rb +54 -0
  91. data/vendored/facter/lib/facter/operatingsystem/vmkernel.rb +11 -0
  92. data/vendored/facter/lib/facter/operatingsystem/windows.rb +43 -0
  93. data/vendored/facter/lib/facter/operatingsystemmajrelease.rb +31 -0
  94. data/vendored/facter/lib/facter/operatingsystemrelease.rb +29 -0
  95. data/vendored/facter/lib/facter/os.rb +98 -0
  96. data/vendored/facter/lib/facter/osfamily.rb +18 -0
  97. data/vendored/facter/lib/facter/partitions.rb +39 -0
  98. data/vendored/facter/lib/facter/path.rb +14 -0
  99. data/vendored/facter/lib/facter/physicalprocessorcount.rb +27 -0
  100. data/vendored/facter/lib/facter/processor.rb +52 -0
  101. data/vendored/facter/lib/facter/processors.rb +66 -0
  102. data/vendored/facter/lib/facter/processors/os.rb +244 -0
  103. data/vendored/facter/lib/facter/ps.rb +31 -0
  104. data/vendored/facter/lib/facter/puppetversion.rb +20 -0
  105. data/vendored/facter/lib/facter/rackspace.rb +37 -0
  106. data/vendored/facter/lib/facter/rubyplatform.rb +12 -0
  107. data/vendored/facter/lib/facter/rubysitedir.rb +15 -0
  108. data/vendored/facter/lib/facter/rubyversion.rb +12 -0
  109. data/vendored/facter/lib/facter/selinux.rb +154 -0
  110. data/vendored/facter/lib/facter/ssh.rb +73 -0
  111. data/vendored/facter/lib/facter/system32.rb +21 -0
  112. data/vendored/facter/lib/facter/system_uptime.rb +44 -0
  113. data/vendored/facter/lib/facter/timezone.rb +14 -0
  114. data/vendored/facter/lib/facter/uniqueid.rb +4 -0
  115. data/vendored/facter/lib/facter/uptime.rb +16 -0
  116. data/vendored/facter/lib/facter/uptime_days.rb +13 -0
  117. data/vendored/facter/lib/facter/uptime_hours.rb +13 -0
  118. data/vendored/facter/lib/facter/uptime_seconds.rb +20 -0
  119. data/vendored/facter/lib/facter/util/architecture.rb +19 -0
  120. data/vendored/facter/lib/facter/util/collection.rb +161 -0
  121. data/vendored/facter/lib/facter/util/composite_loader.rb +12 -0
  122. data/vendored/facter/lib/facter/util/config.rb +88 -0
  123. data/vendored/facter/lib/facter/util/confine.rb +66 -0
  124. data/vendored/facter/lib/facter/util/dhcp_servers.rb +58 -0
  125. data/vendored/facter/lib/facter/util/directory_loader.rb +88 -0
  126. data/vendored/facter/lib/facter/util/ec2.rb +106 -0
  127. data/vendored/facter/lib/facter/util/fact.rb +204 -0
  128. data/vendored/facter/lib/facter/util/file_read.rb +37 -0
  129. data/vendored/facter/lib/facter/util/formatter.rb +39 -0
  130. data/vendored/facter/lib/facter/util/ip.rb +340 -0
  131. data/vendored/facter/lib/facter/util/ip/windows.rb +215 -0
  132. data/vendored/facter/lib/facter/util/loader.rb +155 -0
  133. data/vendored/facter/lib/facter/util/macaddress.rb +43 -0
  134. data/vendored/facter/lib/facter/util/macosx.rb +73 -0
  135. data/vendored/facter/lib/facter/util/manufacturer.rb +99 -0
  136. data/vendored/facter/lib/facter/util/memory.rb +228 -0
  137. data/vendored/facter/lib/facter/util/netmask.rb +40 -0
  138. data/vendored/facter/lib/facter/util/normalization.rb +94 -0
  139. data/vendored/facter/lib/facter/util/nothing_loader.rb +12 -0
  140. data/vendored/facter/lib/facter/util/operatingsystem.rb +21 -0
  141. data/vendored/facter/lib/facter/util/parser.rb +168 -0
  142. data/vendored/facter/lib/facter/util/partitions.rb +47 -0
  143. data/vendored/facter/lib/facter/util/partitions/linux.rb +71 -0
  144. data/vendored/facter/lib/facter/util/partitions/openbsd.rb +40 -0
  145. data/vendored/facter/lib/facter/util/plist.rb +24 -0
  146. data/vendored/facter/lib/facter/util/plist/generator.rb +228 -0
  147. data/vendored/facter/lib/facter/util/plist/parser.rb +226 -0
  148. data/vendored/facter/lib/facter/util/posix.rb +16 -0
  149. data/vendored/facter/lib/facter/util/processor.rb +289 -0
  150. data/vendored/facter/lib/facter/util/registry.rb +11 -0
  151. data/vendored/facter/lib/facter/util/resolution.rb +160 -0
  152. data/vendored/facter/lib/facter/util/solaris_zones.rb +158 -0
  153. data/vendored/facter/lib/facter/util/unix_root.rb +5 -0
  154. data/vendored/facter/lib/facter/util/uptime.rb +83 -0
  155. data/vendored/facter/lib/facter/util/values.rb +109 -0
  156. data/vendored/facter/lib/facter/util/virtual.rb +212 -0
  157. data/vendored/facter/lib/facter/util/vlans.rb +21 -0
  158. data/vendored/facter/lib/facter/util/windows.rb +10 -0
  159. data/vendored/facter/lib/facter/util/windows/api_types.rb +135 -0
  160. data/vendored/facter/lib/facter/util/windows/dir.rb +43 -0
  161. data/vendored/facter/lib/facter/util/windows/error.rb +87 -0
  162. data/vendored/facter/lib/facter/util/windows/process.rb +294 -0
  163. data/vendored/facter/lib/facter/util/windows/user.rb +186 -0
  164. data/vendored/facter/lib/facter/util/windows_root.rb +7 -0
  165. data/vendored/facter/lib/facter/util/wmi.rb +49 -0
  166. data/vendored/facter/lib/facter/util/xendomains.rb +28 -0
  167. data/vendored/facter/lib/facter/version.rb +86 -0
  168. data/vendored/facter/lib/facter/virtual.rb +328 -0
  169. data/vendored/facter/lib/facter/vlans.rb +17 -0
  170. data/vendored/facter/lib/facter/xendomains.rb +20 -0
  171. data/vendored/facter/lib/facter/zfs_version.rb +14 -0
  172. data/vendored/facter/lib/facter/zonename.rb +6 -0
  173. data/vendored/facter/lib/facter/zones.rb +18 -0
  174. data/vendored/facter/lib/facter/zpool_version.rb +10 -0
  175. data/vendored/hiera/lib/hiera.rb +119 -0
  176. data/vendored/hiera/lib/hiera/backend.rb +360 -0
  177. data/vendored/hiera/lib/hiera/backend/json_backend.rb +58 -0
  178. data/vendored/hiera/lib/hiera/backend/yaml_backend.rb +63 -0
  179. data/vendored/hiera/lib/hiera/config.rb +97 -0
  180. data/vendored/hiera/lib/hiera/console_logger.rb +13 -0
  181. data/vendored/hiera/lib/hiera/error.rb +4 -0
  182. data/vendored/hiera/lib/hiera/fallback_logger.rb +41 -0
  183. data/vendored/hiera/lib/hiera/filecache.rb +86 -0
  184. data/vendored/hiera/lib/hiera/interpolate.rb +121 -0
  185. data/vendored/hiera/lib/hiera/noop_logger.rb +8 -0
  186. data/vendored/hiera/lib/hiera/puppet_logger.rb +17 -0
  187. data/vendored/hiera/lib/hiera/recursive_guard.rb +20 -0
  188. data/vendored/hiera/lib/hiera/util.rb +65 -0
  189. data/vendored/hiera/lib/hiera/util/win32.rb +40 -0
  190. data/vendored/hiera/lib/hiera/version.rb +89 -0
  191. data/vendored/puppet/lib/hiera/puppet_function.rb +81 -0
  192. data/vendored/puppet/lib/hiera/scope.rb +61 -0
  193. data/vendored/puppet/lib/hiera_puppet.rb +79 -0
  194. data/vendored/puppet/lib/puppet.rb +311 -0
  195. data/vendored/puppet/lib/puppet/agent.rb +114 -0
  196. data/vendored/puppet/lib/puppet/agent/disabler.rb +53 -0
  197. data/vendored/puppet/lib/puppet/agent/locker.rb +52 -0
  198. data/vendored/puppet/lib/puppet/application.rb +485 -0
  199. data/vendored/puppet/lib/puppet/application/agent.rb +468 -0
  200. data/vendored/puppet/lib/puppet/application/apply.rb +358 -0
  201. data/vendored/puppet/lib/puppet/application/ca.rb +11 -0
  202. data/vendored/puppet/lib/puppet/application/catalog.rb +4 -0
  203. data/vendored/puppet/lib/puppet/application/cert.rb +334 -0
  204. data/vendored/puppet/lib/puppet/application/certificate.rb +17 -0
  205. data/vendored/puppet/lib/puppet/application/certificate_request.rb +7 -0
  206. data/vendored/puppet/lib/puppet/application/certificate_revocation_list.rb +7 -0
  207. data/vendored/puppet/lib/puppet/application/config.rb +4 -0
  208. data/vendored/puppet/lib/puppet/application/describe.rb +258 -0
  209. data/vendored/puppet/lib/puppet/application/device.rb +292 -0
  210. data/vendored/puppet/lib/puppet/application/doc.rb +230 -0
  211. data/vendored/puppet/lib/puppet/application/epp.rb +5 -0
  212. data/vendored/puppet/lib/puppet/application/face_base.rb +268 -0
  213. data/vendored/puppet/lib/puppet/application/facts.rb +4 -0
  214. data/vendored/puppet/lib/puppet/application/filebucket.rb +262 -0
  215. data/vendored/puppet/lib/puppet/application/generate.rb +5 -0
  216. data/vendored/puppet/lib/puppet/application/help.rb +4 -0
  217. data/vendored/puppet/lib/puppet/application/indirection_base.rb +4 -0
  218. data/vendored/puppet/lib/puppet/application/key.rb +4 -0
  219. data/vendored/puppet/lib/puppet/application/lookup.rb +361 -0
  220. data/vendored/puppet/lib/puppet/application/man.rb +4 -0
  221. data/vendored/puppet/lib/puppet/application/master.rb +317 -0
  222. data/vendored/puppet/lib/puppet/application/module.rb +4 -0
  223. data/vendored/puppet/lib/puppet/application/node.rb +4 -0
  224. data/vendored/puppet/lib/puppet/application/parser.rb +5 -0
  225. data/vendored/puppet/lib/puppet/application/plugin.rb +3 -0
  226. data/vendored/puppet/lib/puppet/application/report.rb +4 -0
  227. data/vendored/puppet/lib/puppet/application/resource.rb +231 -0
  228. data/vendored/puppet/lib/puppet/application/script.rb +255 -0
  229. data/vendored/puppet/lib/puppet/application/status.rb +4 -0
  230. data/vendored/puppet/lib/puppet/application_support.rb +57 -0
  231. data/vendored/puppet/lib/puppet/bindings.rb +147 -0
  232. data/vendored/puppet/lib/puppet/coercion.rb +40 -0
  233. data/vendored/puppet/lib/puppet/compilable_resource_type.rb +15 -0
  234. data/vendored/puppet/lib/puppet/configurer.rb +447 -0
  235. data/vendored/puppet/lib/puppet/configurer/downloader.rb +67 -0
  236. data/vendored/puppet/lib/puppet/configurer/downloader_factory.rb +34 -0
  237. data/vendored/puppet/lib/puppet/configurer/fact_handler.rb +46 -0
  238. data/vendored/puppet/lib/puppet/configurer/plugin_handler.rb +25 -0
  239. data/vendored/puppet/lib/puppet/confine.rb +80 -0
  240. data/vendored/puppet/lib/puppet/confine/any.rb +26 -0
  241. data/vendored/puppet/lib/puppet/confine/exists.rb +19 -0
  242. data/vendored/puppet/lib/puppet/confine/false.rb +19 -0
  243. data/vendored/puppet/lib/puppet/confine/feature.rb +17 -0
  244. data/vendored/puppet/lib/puppet/confine/true.rb +20 -0
  245. data/vendored/puppet/lib/puppet/confine/variable.rb +59 -0
  246. data/vendored/puppet/lib/puppet/confine_collection.rb +50 -0
  247. data/vendored/puppet/lib/puppet/confiner.rb +46 -0
  248. data/vendored/puppet/lib/puppet/context.rb +116 -0
  249. data/vendored/puppet/lib/puppet/context/trusted_information.rb +76 -0
  250. data/vendored/puppet/lib/puppet/daemon.rb +195 -0
  251. data/vendored/puppet/lib/puppet/data_binding.rb +14 -0
  252. data/vendored/puppet/lib/puppet/defaults.rb +1957 -0
  253. data/vendored/puppet/lib/puppet/environments.rb +509 -0
  254. data/vendored/puppet/lib/puppet/error.rb +117 -0
  255. data/vendored/puppet/lib/puppet/etc.rb +161 -0
  256. data/vendored/puppet/lib/puppet/external/dot.rb +326 -0
  257. data/vendored/puppet/lib/puppet/external/nagios.rb +46 -0
  258. data/vendored/puppet/lib/puppet/external/nagios/base.rb +472 -0
  259. data/vendored/puppet/lib/puppet/external/nagios/grammar.ry +248 -0
  260. data/vendored/puppet/lib/puppet/external/nagios/makefile +9 -0
  261. data/vendored/puppet/lib/puppet/external/nagios/parser.rb +400 -0
  262. data/vendored/puppet/lib/puppet/external/pson/common.rb +374 -0
  263. data/vendored/puppet/lib/puppet/external/pson/pure.rb +15 -0
  264. data/vendored/puppet/lib/puppet/external/pson/pure/generator.rb +395 -0
  265. data/vendored/puppet/lib/puppet/external/pson/pure/parser.rb +307 -0
  266. data/vendored/puppet/lib/puppet/external/pson/version.rb +8 -0
  267. data/vendored/puppet/lib/puppet/face.rb +12 -0
  268. data/vendored/puppet/lib/puppet/face/ca.rb +266 -0
  269. data/vendored/puppet/lib/puppet/face/catalog.rb +130 -0
  270. data/vendored/puppet/lib/puppet/face/catalog/select.rb +49 -0
  271. data/vendored/puppet/lib/puppet/face/certificate.rb +165 -0
  272. data/vendored/puppet/lib/puppet/face/certificate_request.rb +56 -0
  273. data/vendored/puppet/lib/puppet/face/certificate_revocation_list.rb +56 -0
  274. data/vendored/puppet/lib/puppet/face/config.rb +119 -0
  275. data/vendored/puppet/lib/puppet/face/epp.rb +527 -0
  276. data/vendored/puppet/lib/puppet/face/facts.rb +38 -0
  277. data/vendored/puppet/lib/puppet/face/generate.rb +64 -0
  278. data/vendored/puppet/lib/puppet/face/help.rb +205 -0
  279. data/vendored/puppet/lib/puppet/face/help/action.erb +86 -0
  280. data/vendored/puppet/lib/puppet/face/help/face.erb +114 -0
  281. data/vendored/puppet/lib/puppet/face/help/global.erb +16 -0
  282. data/vendored/puppet/lib/puppet/face/help/man.erb +152 -0
  283. data/vendored/puppet/lib/puppet/face/key.rb +16 -0
  284. data/vendored/puppet/lib/puppet/face/man.rb +101 -0
  285. data/vendored/puppet/lib/puppet/face/module.rb +19 -0
  286. data/vendored/puppet/lib/puppet/face/module/build.rb +63 -0
  287. data/vendored/puppet/lib/puppet/face/module/changes.rb +42 -0
  288. data/vendored/puppet/lib/puppet/face/module/generate.rb +251 -0
  289. data/vendored/puppet/lib/puppet/face/module/install.rb +149 -0
  290. data/vendored/puppet/lib/puppet/face/module/list.rb +279 -0
  291. data/vendored/puppet/lib/puppet/face/module/search.rb +94 -0
  292. data/vendored/puppet/lib/puppet/face/module/uninstall.rb +81 -0
  293. data/vendored/puppet/lib/puppet/face/module/upgrade.rb +90 -0
  294. data/vendored/puppet/lib/puppet/face/node.rb +42 -0
  295. data/vendored/puppet/lib/puppet/face/node/clean.rb +96 -0
  296. data/vendored/puppet/lib/puppet/face/parser.rb +161 -0
  297. data/vendored/puppet/lib/puppet/face/plugin.rb +58 -0
  298. data/vendored/puppet/lib/puppet/face/report.rb +54 -0
  299. data/vendored/puppet/lib/puppet/face/resource.rb +53 -0
  300. data/vendored/puppet/lib/puppet/face/status.rb +50 -0
  301. data/vendored/puppet/lib/puppet/feature/base.rb +95 -0
  302. data/vendored/puppet/lib/puppet/feature/bolt.rb +3 -0
  303. data/vendored/puppet/lib/puppet/feature/cfpropertylist.rb +3 -0
  304. data/vendored/puppet/lib/puppet/feature/eventlog.rb +5 -0
  305. data/vendored/puppet/lib/puppet/feature/hiera_eyaml.rb +3 -0
  306. data/vendored/puppet/lib/puppet/feature/hocon.rb +3 -0
  307. data/vendored/puppet/lib/puppet/feature/libuser.rb +8 -0
  308. data/vendored/puppet/lib/puppet/feature/msgpack.rb +3 -0
  309. data/vendored/puppet/lib/puppet/feature/pe_license.rb +4 -0
  310. data/vendored/puppet/lib/puppet/feature/rack.rb +19 -0
  311. data/vendored/puppet/lib/puppet/feature/selinux.rb +3 -0
  312. data/vendored/puppet/lib/puppet/feature/ssh.rb +3 -0
  313. data/vendored/puppet/lib/puppet/feature/telnet.rb +9 -0
  314. data/vendored/puppet/lib/puppet/feature/zlib.rb +5 -0
  315. data/vendored/puppet/lib/puppet/file_bucket.rb +4 -0
  316. data/vendored/puppet/lib/puppet/file_bucket/dipper.rb +174 -0
  317. data/vendored/puppet/lib/puppet/file_bucket/file.rb +131 -0
  318. data/vendored/puppet/lib/puppet/file_serving.rb +3 -0
  319. data/vendored/puppet/lib/puppet/file_serving/base.rb +85 -0
  320. data/vendored/puppet/lib/puppet/file_serving/configuration.rb +112 -0
  321. data/vendored/puppet/lib/puppet/file_serving/configuration/parser.rb +123 -0
  322. data/vendored/puppet/lib/puppet/file_serving/content.rb +43 -0
  323. data/vendored/puppet/lib/puppet/file_serving/fileset.rb +174 -0
  324. data/vendored/puppet/lib/puppet/file_serving/http_metadata.rb +46 -0
  325. data/vendored/puppet/lib/puppet/file_serving/metadata.rb +163 -0
  326. data/vendored/puppet/lib/puppet/file_serving/mount.rb +39 -0
  327. data/vendored/puppet/lib/puppet/file_serving/mount/file.rb +121 -0
  328. data/vendored/puppet/lib/puppet/file_serving/mount/modules.rb +24 -0
  329. data/vendored/puppet/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  330. data/vendored/puppet/lib/puppet/file_serving/mount/plugins.rb +35 -0
  331. data/vendored/puppet/lib/puppet/file_serving/mount/tasks.rb +21 -0
  332. data/vendored/puppet/lib/puppet/file_serving/terminus_helper.rb +31 -0
  333. data/vendored/puppet/lib/puppet/file_serving/terminus_selector.rb +32 -0
  334. data/vendored/puppet/lib/puppet/file_system.rb +404 -0
  335. data/vendored/puppet/lib/puppet/file_system/file_impl.rb +154 -0
  336. data/vendored/puppet/lib/puppet/file_system/memory_file.rb +66 -0
  337. data/vendored/puppet/lib/puppet/file_system/memory_impl.rb +86 -0
  338. data/vendored/puppet/lib/puppet/file_system/path_pattern.rb +98 -0
  339. data/vendored/puppet/lib/puppet/file_system/posix.rb +46 -0
  340. data/vendored/puppet/lib/puppet/file_system/uniquefile.rb +190 -0
  341. data/vendored/puppet/lib/puppet/file_system/windows.rb +130 -0
  342. data/vendored/puppet/lib/puppet/forge.rb +229 -0
  343. data/vendored/puppet/lib/puppet/forge/cache.rb +60 -0
  344. data/vendored/puppet/lib/puppet/forge/errors.rb +112 -0
  345. data/vendored/puppet/lib/puppet/forge/repository.rb +155 -0
  346. data/vendored/puppet/lib/puppet/functions.rb +745 -0
  347. data/vendored/puppet/lib/puppet/functions/alert.rb +14 -0
  348. data/vendored/puppet/lib/puppet/functions/all.rb +104 -0
  349. data/vendored/puppet/lib/puppet/functions/annotate.rb +108 -0
  350. data/vendored/puppet/lib/puppet/functions/any.rb +109 -0
  351. data/vendored/puppet/lib/puppet/functions/assert_type.rb +93 -0
  352. data/vendored/puppet/lib/puppet/functions/binary_file.rb +19 -0
  353. data/vendored/puppet/lib/puppet/functions/break.rb +22 -0
  354. data/vendored/puppet/lib/puppet/functions/call.rb +42 -0
  355. data/vendored/puppet/lib/puppet/functions/contain.rb +39 -0
  356. data/vendored/puppet/lib/puppet/functions/crit.rb +14 -0
  357. data/vendored/puppet/lib/puppet/functions/debug.rb +14 -0
  358. data/vendored/puppet/lib/puppet/functions/defined.rb +160 -0
  359. data/vendored/puppet/lib/puppet/functions/dig.rb +23 -0
  360. data/vendored/puppet/lib/puppet/functions/each.rb +163 -0
  361. data/vendored/puppet/lib/puppet/functions/emerg.rb +14 -0
  362. data/vendored/puppet/lib/puppet/functions/epp.rb +48 -0
  363. data/vendored/puppet/lib/puppet/functions/err.rb +14 -0
  364. data/vendored/puppet/lib/puppet/functions/eyaml_lookup_key.rb +94 -0
  365. data/vendored/puppet/lib/puppet/functions/file_upload.rb +48 -0
  366. data/vendored/puppet/lib/puppet/functions/filter.rb +143 -0
  367. data/vendored/puppet/lib/puppet/functions/find_file.rb +31 -0
  368. data/vendored/puppet/lib/puppet/functions/hiera.rb +88 -0
  369. data/vendored/puppet/lib/puppet/functions/hiera_array.rb +81 -0
  370. data/vendored/puppet/lib/puppet/functions/hiera_hash.rb +92 -0
  371. data/vendored/puppet/lib/puppet/functions/hiera_include.rb +104 -0
  372. data/vendored/puppet/lib/puppet/functions/hocon_data.rb +41 -0
  373. data/vendored/puppet/lib/puppet/functions/import.rb +7 -0
  374. data/vendored/puppet/lib/puppet/functions/include.rb +27 -0
  375. data/vendored/puppet/lib/puppet/functions/info.rb +14 -0
  376. data/vendored/puppet/lib/puppet/functions/inline_epp.rb +59 -0
  377. data/vendored/puppet/lib/puppet/functions/json_data.rb +33 -0
  378. data/vendored/puppet/lib/puppet/functions/lest.rb +17 -0
  379. data/vendored/puppet/lib/puppet/functions/lookup.rb +223 -0
  380. data/vendored/puppet/lib/puppet/functions/map.rb +126 -0
  381. data/vendored/puppet/lib/puppet/functions/match.rb +120 -0
  382. data/vendored/puppet/lib/puppet/functions/new.rb +32 -0
  383. data/vendored/puppet/lib/puppet/functions/next.rb +23 -0
  384. data/vendored/puppet/lib/puppet/functions/notice.rb +14 -0
  385. data/vendored/puppet/lib/puppet/functions/reduce.rb +164 -0
  386. data/vendored/puppet/lib/puppet/functions/regsubst.rb +76 -0
  387. data/vendored/puppet/lib/puppet/functions/require.rb +43 -0
  388. data/vendored/puppet/lib/puppet/functions/return.rb +22 -0
  389. data/vendored/puppet/lib/puppet/functions/reverse_each.rb +25 -0
  390. data/vendored/puppet/lib/puppet/functions/run_command.rb +41 -0
  391. data/vendored/puppet/lib/puppet/functions/run_plan.rb +40 -0
  392. data/vendored/puppet/lib/puppet/functions/run_script.rb +50 -0
  393. data/vendored/puppet/lib/puppet/functions/run_task.rb +73 -0
  394. data/vendored/puppet/lib/puppet/functions/scanf.rb +44 -0
  395. data/vendored/puppet/lib/puppet/functions/slice.rb +111 -0
  396. data/vendored/puppet/lib/puppet/functions/split.rb +47 -0
  397. data/vendored/puppet/lib/puppet/functions/step.rb +26 -0
  398. data/vendored/puppet/lib/puppet/functions/strftime.rb +43 -0
  399. data/vendored/puppet/lib/puppet/functions/then.rb +14 -0
  400. data/vendored/puppet/lib/puppet/functions/tree_each.rb +200 -0
  401. data/vendored/puppet/lib/puppet/functions/type.rb +31 -0
  402. data/vendored/puppet/lib/puppet/functions/unique.rb +132 -0
  403. data/vendored/puppet/lib/puppet/functions/unwrap.rb +40 -0
  404. data/vendored/puppet/lib/puppet/functions/versioncmp.rb +36 -0
  405. data/vendored/puppet/lib/puppet/functions/warning.rb +14 -0
  406. data/vendored/puppet/lib/puppet/functions/with.rb +30 -0
  407. data/vendored/puppet/lib/puppet/functions/yaml_data.rb +42 -0
  408. data/vendored/puppet/lib/puppet/generate/models/type/property.rb +70 -0
  409. data/vendored/puppet/lib/puppet/generate/models/type/type.rb +62 -0
  410. data/vendored/puppet/lib/puppet/generate/templates/type/pcore.erb +42 -0
  411. data/vendored/puppet/lib/puppet/generate/type.rb +239 -0
  412. data/vendored/puppet/lib/puppet/gettext/config.rb +70 -0
  413. data/vendored/puppet/lib/puppet/gettext/stubs.rb +11 -0
  414. data/vendored/puppet/lib/puppet/graph.rb +11 -0
  415. data/vendored/puppet/lib/puppet/graph/key.rb +26 -0
  416. data/vendored/puppet/lib/puppet/graph/prioritizer.rb +29 -0
  417. data/vendored/puppet/lib/puppet/graph/random_prioritizer.rb +16 -0
  418. data/vendored/puppet/lib/puppet/graph/rb_tree_map.rb +388 -0
  419. data/vendored/puppet/lib/puppet/graph/relationship_graph.rb +277 -0
  420. data/vendored/puppet/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  421. data/vendored/puppet/lib/puppet/graph/simple_graph.rb +539 -0
  422. data/vendored/puppet/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  423. data/vendored/puppet/lib/puppet/indirector.rb +61 -0
  424. data/vendored/puppet/lib/puppet/indirector/catalog/compiler.rb +384 -0
  425. data/vendored/puppet/lib/puppet/indirector/catalog/json.rb +24 -0
  426. data/vendored/puppet/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  427. data/vendored/puppet/lib/puppet/indirector/catalog/rest.rb +6 -0
  428. data/vendored/puppet/lib/puppet/indirector/catalog/store_configs.rb +8 -0
  429. data/vendored/puppet/lib/puppet/indirector/catalog/yaml.rb +22 -0
  430. data/vendored/puppet/lib/puppet/indirector/certificate/ca.rb +9 -0
  431. data/vendored/puppet/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  432. data/vendored/puppet/lib/puppet/indirector/certificate/file.rb +9 -0
  433. data/vendored/puppet/lib/puppet/indirector/certificate/rest.rb +16 -0
  434. data/vendored/puppet/lib/puppet/indirector/certificate_request/ca.rb +22 -0
  435. data/vendored/puppet/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  436. data/vendored/puppet/lib/puppet/indirector/certificate_request/file.rb +8 -0
  437. data/vendored/puppet/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  438. data/vendored/puppet/lib/puppet/indirector/certificate_request/rest.rb +10 -0
  439. data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  440. data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  441. data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  442. data/vendored/puppet/lib/puppet/indirector/certificate_revocation_list/rest.rb +22 -0
  443. data/vendored/puppet/lib/puppet/indirector/certificate_status.rb +4 -0
  444. data/vendored/puppet/lib/puppet/indirector/certificate_status/file.rb +91 -0
  445. data/vendored/puppet/lib/puppet/indirector/certificate_status/rest.rb +11 -0
  446. data/vendored/puppet/lib/puppet/indirector/code.rb +6 -0
  447. data/vendored/puppet/lib/puppet/indirector/data_binding/hiera.rb +7 -0
  448. data/vendored/puppet/lib/puppet/indirector/data_binding/none.rb +8 -0
  449. data/vendored/puppet/lib/puppet/indirector/direct_file_server.rb +17 -0
  450. data/vendored/puppet/lib/puppet/indirector/envelope.rb +11 -0
  451. data/vendored/puppet/lib/puppet/indirector/errors.rb +5 -0
  452. data/vendored/puppet/lib/puppet/indirector/exec.rb +38 -0
  453. data/vendored/puppet/lib/puppet/indirector/face.rb +153 -0
  454. data/vendored/puppet/lib/puppet/indirector/facts/facter.rb +90 -0
  455. data/vendored/puppet/lib/puppet/indirector/facts/memory.rb +9 -0
  456. data/vendored/puppet/lib/puppet/indirector/facts/network_device.rb +27 -0
  457. data/vendored/puppet/lib/puppet/indirector/facts/store_configs.rb +11 -0
  458. data/vendored/puppet/lib/puppet/indirector/facts/yaml.rb +86 -0
  459. data/vendored/puppet/lib/puppet/indirector/file_bucket_file/file.rb +255 -0
  460. data/vendored/puppet/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
  461. data/vendored/puppet/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
  462. data/vendored/puppet/lib/puppet/indirector/file_content.rb +5 -0
  463. data/vendored/puppet/lib/puppet/indirector/file_content/file.rb +7 -0
  464. data/vendored/puppet/lib/puppet/indirector/file_content/file_server.rb +7 -0
  465. data/vendored/puppet/lib/puppet/indirector/file_content/http.rb +15 -0
  466. data/vendored/puppet/lib/puppet/indirector/file_content/rest.rb +9 -0
  467. data/vendored/puppet/lib/puppet/indirector/file_content/selector.rb +30 -0
  468. data/vendored/puppet/lib/puppet/indirector/file_metadata.rb +5 -0
  469. data/vendored/puppet/lib/puppet/indirector/file_metadata/file.rb +7 -0
  470. data/vendored/puppet/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
  471. data/vendored/puppet/lib/puppet/indirector/file_metadata/http.rb +27 -0
  472. data/vendored/puppet/lib/puppet/indirector/file_metadata/rest.rb +9 -0
  473. data/vendored/puppet/lib/puppet/indirector/file_metadata/selector.rb +30 -0
  474. data/vendored/puppet/lib/puppet/indirector/file_server.rb +59 -0
  475. data/vendored/puppet/lib/puppet/indirector/generic_http.rb +16 -0
  476. data/vendored/puppet/lib/puppet/indirector/hiera.rb +94 -0
  477. data/vendored/puppet/lib/puppet/indirector/indirection.rb +336 -0
  478. data/vendored/puppet/lib/puppet/indirector/json.rb +75 -0
  479. data/vendored/puppet/lib/puppet/indirector/key/ca.rb +16 -0
  480. data/vendored/puppet/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  481. data/vendored/puppet/lib/puppet/indirector/key/file.rb +50 -0
  482. data/vendored/puppet/lib/puppet/indirector/key/memory.rb +6 -0
  483. data/vendored/puppet/lib/puppet/indirector/ldap.rb +80 -0
  484. data/vendored/puppet/lib/puppet/indirector/memory.rb +34 -0
  485. data/vendored/puppet/lib/puppet/indirector/msgpack.rb +83 -0
  486. data/vendored/puppet/lib/puppet/indirector/node/exec.rb +71 -0
  487. data/vendored/puppet/lib/puppet/indirector/node/ldap.rb +259 -0
  488. data/vendored/puppet/lib/puppet/indirector/node/memory.rb +10 -0
  489. data/vendored/puppet/lib/puppet/indirector/node/msgpack.rb +7 -0
  490. data/vendored/puppet/lib/puppet/indirector/node/plain.rb +21 -0
  491. data/vendored/puppet/lib/puppet/indirector/node/rest.rb +7 -0
  492. data/vendored/puppet/lib/puppet/indirector/node/store_configs.rb +8 -0
  493. data/vendored/puppet/lib/puppet/indirector/node/write_only_yaml.rb +37 -0
  494. data/vendored/puppet/lib/puppet/indirector/node/yaml.rb +13 -0
  495. data/vendored/puppet/lib/puppet/indirector/none.rb +9 -0
  496. data/vendored/puppet/lib/puppet/indirector/plain.rb +9 -0
  497. data/vendored/puppet/lib/puppet/indirector/report/msgpack.rb +11 -0
  498. data/vendored/puppet/lib/puppet/indirector/report/processor.rb +59 -0
  499. data/vendored/puppet/lib/puppet/indirector/report/rest.rb +28 -0
  500. data/vendored/puppet/lib/puppet/indirector/report/yaml.rb +11 -0
  501. data/vendored/puppet/lib/puppet/indirector/request.rb +274 -0
  502. data/vendored/puppet/lib/puppet/indirector/resource/ral.rb +63 -0
  503. data/vendored/puppet/lib/puppet/indirector/resource/store_configs.rb +12 -0
  504. data/vendored/puppet/lib/puppet/indirector/resource/validator.rb +8 -0
  505. data/vendored/puppet/lib/puppet/indirector/rest.rb +348 -0
  506. data/vendored/puppet/lib/puppet/indirector/ssl_file.rb +201 -0
  507. data/vendored/puppet/lib/puppet/indirector/status.rb +3 -0
  508. data/vendored/puppet/lib/puppet/indirector/status/local.rb +12 -0
  509. data/vendored/puppet/lib/puppet/indirector/status/rest.rb +9 -0
  510. data/vendored/puppet/lib/puppet/indirector/store_configs.rb +30 -0
  511. data/vendored/puppet/lib/puppet/indirector/terminus.rb +169 -0
  512. data/vendored/puppet/lib/puppet/indirector/yaml.rb +63 -0
  513. data/vendored/puppet/lib/puppet/info_service.rb +17 -0
  514. data/vendored/puppet/lib/puppet/info_service/class_information_service.rb +110 -0
  515. data/vendored/puppet/lib/puppet/info_service/task_information_service.rb +32 -0
  516. data/vendored/puppet/lib/puppet/interface.rb +236 -0
  517. data/vendored/puppet/lib/puppet/interface/action.rb +374 -0
  518. data/vendored/puppet/lib/puppet/interface/action_builder.rb +149 -0
  519. data/vendored/puppet/lib/puppet/interface/action_manager.rb +97 -0
  520. data/vendored/puppet/lib/puppet/interface/documentation.rb +342 -0
  521. data/vendored/puppet/lib/puppet/interface/face_collection.rb +130 -0
  522. data/vendored/puppet/lib/puppet/interface/option.rb +150 -0
  523. data/vendored/puppet/lib/puppet/interface/option_builder.rb +91 -0
  524. data/vendored/puppet/lib/puppet/interface/option_manager.rb +99 -0
  525. data/vendored/puppet/lib/puppet/loaders.rb +26 -0
  526. data/vendored/puppet/lib/puppet/metatype/manager.rb +195 -0
  527. data/vendored/puppet/lib/puppet/module.rb +473 -0
  528. data/vendored/puppet/lib/puppet/module/task.rb +90 -0
  529. data/vendored/puppet/lib/puppet/module_tool.rb +196 -0
  530. data/vendored/puppet/lib/puppet/module_tool/applications.rb +14 -0
  531. data/vendored/puppet/lib/puppet/module_tool/applications/application.rb +90 -0
  532. data/vendored/puppet/lib/puppet/module_tool/applications/builder.rb +148 -0
  533. data/vendored/puppet/lib/puppet/module_tool/applications/checksummer.rb +62 -0
  534. data/vendored/puppet/lib/puppet/module_tool/applications/installer.rb +352 -0
  535. data/vendored/puppet/lib/puppet/module_tool/applications/searcher.rb +29 -0
  536. data/vendored/puppet/lib/puppet/module_tool/applications/uninstaller.rb +118 -0
  537. data/vendored/puppet/lib/puppet/module_tool/applications/unpacker.rb +100 -0
  538. data/vendored/puppet/lib/puppet/module_tool/applications/upgrader.rb +278 -0
  539. data/vendored/puppet/lib/puppet/module_tool/checksums.rb +49 -0
  540. data/vendored/puppet/lib/puppet/module_tool/contents_description.rb +88 -0
  541. data/vendored/puppet/lib/puppet/module_tool/dependency.rb +41 -0
  542. data/vendored/puppet/lib/puppet/module_tool/errors.rb +11 -0
  543. data/vendored/puppet/lib/puppet/module_tool/errors/base.rb +15 -0
  544. data/vendored/puppet/lib/puppet/module_tool/errors/installer.rb +95 -0
  545. data/vendored/puppet/lib/puppet/module_tool/errors/shared.rb +190 -0
  546. data/vendored/puppet/lib/puppet/module_tool/errors/uninstaller.rb +49 -0
  547. data/vendored/puppet/lib/puppet/module_tool/errors/upgrader.rb +63 -0
  548. data/vendored/puppet/lib/puppet/module_tool/install_directory.rb +45 -0
  549. data/vendored/puppet/lib/puppet/module_tool/installed_modules.rb +96 -0
  550. data/vendored/puppet/lib/puppet/module_tool/local_tarball.rb +90 -0
  551. data/vendored/puppet/lib/puppet/module_tool/metadata.rb +224 -0
  552. data/vendored/puppet/lib/puppet/module_tool/shared_behaviors.rb +180 -0
  553. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.fixtures.yml.erb +7 -0
  554. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.gitignore +18 -0
  555. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.rubocop.yml +42 -0
  556. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/.yardopts +1 -0
  557. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +18 -0
  558. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +89 -0
  559. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +32 -0
  560. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +12 -0
  561. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +48 -0
  562. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
  563. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +6 -0
  564. data/vendored/puppet/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -0
  565. data/vendored/puppet/lib/puppet/module_tool/tar.rb +18 -0
  566. data/vendored/puppet/lib/puppet/module_tool/tar/gnu.rb +19 -0
  567. data/vendored/puppet/lib/puppet/module_tool/tar/mini.rb +53 -0
  568. data/vendored/puppet/lib/puppet/network.rb +3 -0
  569. data/vendored/puppet/lib/puppet/network/auth_config_parser.rb +85 -0
  570. data/vendored/puppet/lib/puppet/network/authconfig.rb +112 -0
  571. data/vendored/puppet/lib/puppet/network/authorization.rb +41 -0
  572. data/vendored/puppet/lib/puppet/network/authstore.rb +282 -0
  573. data/vendored/puppet/lib/puppet/network/client_request.rb +29 -0
  574. data/vendored/puppet/lib/puppet/network/format.rb +110 -0
  575. data/vendored/puppet/lib/puppet/network/format_handler.rb +108 -0
  576. data/vendored/puppet/lib/puppet/network/format_support.rb +134 -0
  577. data/vendored/puppet/lib/puppet/network/formats.rb +171 -0
  578. data/vendored/puppet/lib/puppet/network/http.rb +30 -0
  579. data/vendored/puppet/lib/puppet/network/http/api.rb +44 -0
  580. data/vendored/puppet/lib/puppet/network/http/api/ca.rb +2 -0
  581. data/vendored/puppet/lib/puppet/network/http/api/ca/v1.rb +11 -0
  582. data/vendored/puppet/lib/puppet/network/http/api/indirected_routes.rb +278 -0
  583. data/vendored/puppet/lib/puppet/network/http/api/indirection_type.rb +32 -0
  584. data/vendored/puppet/lib/puppet/network/http/api/master.rb +2 -0
  585. data/vendored/puppet/lib/puppet/network/http/api/master/v3.rb +28 -0
  586. data/vendored/puppet/lib/puppet/network/http/api/master/v3/authorization.rb +18 -0
  587. data/vendored/puppet/lib/puppet/network/http/api/master/v3/environment.rb +82 -0
  588. data/vendored/puppet/lib/puppet/network/http/api/master/v3/environments.rb +35 -0
  589. data/vendored/puppet/lib/puppet/network/http/compression.rb +120 -0
  590. data/vendored/puppet/lib/puppet/network/http/connection.rb +332 -0
  591. data/vendored/puppet/lib/puppet/network/http/error.rb +73 -0
  592. data/vendored/puppet/lib/puppet/network/http/factory.rb +47 -0
  593. data/vendored/puppet/lib/puppet/network/http/handler.rb +183 -0
  594. data/vendored/puppet/lib/puppet/network/http/issues.rb +12 -0
  595. data/vendored/puppet/lib/puppet/network/http/memory_response.rb +13 -0
  596. data/vendored/puppet/lib/puppet/network/http/nocache_pool.rb +21 -0
  597. data/vendored/puppet/lib/puppet/network/http/pool.rb +129 -0
  598. data/vendored/puppet/lib/puppet/network/http/rack.rb +33 -0
  599. data/vendored/puppet/lib/puppet/network/http/rack/rest.rb +162 -0
  600. data/vendored/puppet/lib/puppet/network/http/request.rb +70 -0
  601. data/vendored/puppet/lib/puppet/network/http/response.rb +23 -0
  602. data/vendored/puppet/lib/puppet/network/http/route.rb +100 -0
  603. data/vendored/puppet/lib/puppet/network/http/session.rb +17 -0
  604. data/vendored/puppet/lib/puppet/network/http/site.rb +39 -0
  605. data/vendored/puppet/lib/puppet/network/http/webrick.rb +125 -0
  606. data/vendored/puppet/lib/puppet/network/http/webrick/rest.rb +114 -0
  607. data/vendored/puppet/lib/puppet/network/http_pool.rb +61 -0
  608. data/vendored/puppet/lib/puppet/network/resolver.rb +86 -0
  609. data/vendored/puppet/lib/puppet/network/rest_controller.rb +2 -0
  610. data/vendored/puppet/lib/puppet/network/rights.rb +209 -0
  611. data/vendored/puppet/lib/puppet/network/server.rb +39 -0
  612. data/vendored/puppet/lib/puppet/node.rb +262 -0
  613. data/vendored/puppet/lib/puppet/node/environment.rb +572 -0
  614. data/vendored/puppet/lib/puppet/node/facts.rb +128 -0
  615. data/vendored/puppet/lib/puppet/parameter.rb +567 -0
  616. data/vendored/puppet/lib/puppet/parameter/boolean.rb +15 -0
  617. data/vendored/puppet/lib/puppet/parameter/package_options.rb +31 -0
  618. data/vendored/puppet/lib/puppet/parameter/path.rb +57 -0
  619. data/vendored/puppet/lib/puppet/parameter/value.rb +91 -0
  620. data/vendored/puppet/lib/puppet/parameter/value_collection.rb +212 -0
  621. data/vendored/puppet/lib/puppet/parser.rb +20 -0
  622. data/vendored/puppet/lib/puppet/parser/abstract_compiler.rb +36 -0
  623. data/vendored/puppet/lib/puppet/parser/ast.rb +65 -0
  624. data/vendored/puppet/lib/puppet/parser/ast/block_expression.rb +15 -0
  625. data/vendored/puppet/lib/puppet/parser/ast/branch.rb +19 -0
  626. data/vendored/puppet/lib/puppet/parser/ast/hostclass.rb +27 -0
  627. data/vendored/puppet/lib/puppet/parser/ast/leaf.rb +75 -0
  628. data/vendored/puppet/lib/puppet/parser/ast/node.rb +17 -0
  629. data/vendored/puppet/lib/puppet/parser/ast/pops_bridge.rb +273 -0
  630. data/vendored/puppet/lib/puppet/parser/ast/resource.rb +66 -0
  631. data/vendored/puppet/lib/puppet/parser/ast/resource_instance.rb +10 -0
  632. data/vendored/puppet/lib/puppet/parser/ast/resourceparam.rb +31 -0
  633. data/vendored/puppet/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  634. data/vendored/puppet/lib/puppet/parser/compiler.rb +788 -0
  635. data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  636. data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  637. data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +57 -0
  638. data/vendored/puppet/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  639. data/vendored/puppet/lib/puppet/parser/e4_parser_adapter.rb +60 -0
  640. data/vendored/puppet/lib/puppet/parser/environment_compiler.rb +199 -0
  641. data/vendored/puppet/lib/puppet/parser/files.rb +92 -0
  642. data/vendored/puppet/lib/puppet/parser/functions.rb +278 -0
  643. data/vendored/puppet/lib/puppet/parser/functions/assert_type.rb +60 -0
  644. data/vendored/puppet/lib/puppet/parser/functions/binary_file.rb +24 -0
  645. data/vendored/puppet/lib/puppet/parser/functions/break.rb +39 -0
  646. data/vendored/puppet/lib/puppet/parser/functions/contain.rb +30 -0
  647. data/vendored/puppet/lib/puppet/parser/functions/create_resources.rb +112 -0
  648. data/vendored/puppet/lib/puppet/parser/functions/defined.rb +107 -0
  649. data/vendored/puppet/lib/puppet/parser/functions/dig.rb +38 -0
  650. data/vendored/puppet/lib/puppet/parser/functions/digest.rb +5 -0
  651. data/vendored/puppet/lib/puppet/parser/functions/each.rb +104 -0
  652. data/vendored/puppet/lib/puppet/parser/functions/epp.rb +39 -0
  653. data/vendored/puppet/lib/puppet/parser/functions/fail.rb +4 -0
  654. data/vendored/puppet/lib/puppet/parser/functions/file.rb +33 -0
  655. data/vendored/puppet/lib/puppet/parser/functions/filter.rb +78 -0
  656. data/vendored/puppet/lib/puppet/parser/functions/find_file.rb +28 -0
  657. data/vendored/puppet/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
  658. data/vendored/puppet/lib/puppet/parser/functions/generate.rb +38 -0
  659. data/vendored/puppet/lib/puppet/parser/functions/hiera.rb +103 -0
  660. data/vendored/puppet/lib/puppet/parser/functions/hiera_array.rb +92 -0
  661. data/vendored/puppet/lib/puppet/parser/functions/hiera_hash.rb +102 -0
  662. data/vendored/puppet/lib/puppet/parser/functions/hiera_include.rb +102 -0
  663. data/vendored/puppet/lib/puppet/parser/functions/include.rb +34 -0
  664. data/vendored/puppet/lib/puppet/parser/functions/inline_epp.rb +51 -0
  665. data/vendored/puppet/lib/puppet/parser/functions/inline_template.rb +27 -0
  666. data/vendored/puppet/lib/puppet/parser/functions/lest.rb +49 -0
  667. data/vendored/puppet/lib/puppet/parser/functions/lookup.rb +132 -0
  668. data/vendored/puppet/lib/puppet/parser/functions/map.rb +76 -0
  669. data/vendored/puppet/lib/puppet/parser/functions/match.rb +43 -0
  670. data/vendored/puppet/lib/puppet/parser/functions/md5.rb +5 -0
  671. data/vendored/puppet/lib/puppet/parser/functions/new.rb +1006 -0
  672. data/vendored/puppet/lib/puppet/parser/functions/next.rb +38 -0
  673. data/vendored/puppet/lib/puppet/parser/functions/realize.rb +20 -0
  674. data/vendored/puppet/lib/puppet/parser/functions/reduce.rb +137 -0
  675. data/vendored/puppet/lib/puppet/parser/functions/regsubst.rb +62 -0
  676. data/vendored/puppet/lib/puppet/parser/functions/require.rb +40 -0
  677. data/vendored/puppet/lib/puppet/parser/functions/return.rb +71 -0
  678. data/vendored/puppet/lib/puppet/parser/functions/reverse_each.rb +83 -0
  679. data/vendored/puppet/lib/puppet/parser/functions/scanf.rb +38 -0
  680. data/vendored/puppet/lib/puppet/parser/functions/sha1.rb +5 -0
  681. data/vendored/puppet/lib/puppet/parser/functions/shellquote.rb +61 -0
  682. data/vendored/puppet/lib/puppet/parser/functions/slice.rb +39 -0
  683. data/vendored/puppet/lib/puppet/parser/functions/split.rb +28 -0
  684. data/vendored/puppet/lib/puppet/parser/functions/sprintf.rb +36 -0
  685. data/vendored/puppet/lib/puppet/parser/functions/step.rb +84 -0
  686. data/vendored/puppet/lib/puppet/parser/functions/strftime.rb +185 -0
  687. data/vendored/puppet/lib/puppet/parser/functions/tag.rb +12 -0
  688. data/vendored/puppet/lib/puppet/parser/functions/tagged.rb +24 -0
  689. data/vendored/puppet/lib/puppet/parser/functions/template.rb +35 -0
  690. data/vendored/puppet/lib/puppet/parser/functions/then.rb +73 -0
  691. data/vendored/puppet/lib/puppet/parser/functions/type.rb +53 -0
  692. data/vendored/puppet/lib/puppet/parser/functions/versioncmp.rb +30 -0
  693. data/vendored/puppet/lib/puppet/parser/functions/with.rb +28 -0
  694. data/vendored/puppet/lib/puppet/parser/parser_factory.rb +30 -0
  695. data/vendored/puppet/lib/puppet/parser/relationship.rb +83 -0
  696. data/vendored/puppet/lib/puppet/parser/resource.rb +418 -0
  697. data/vendored/puppet/lib/puppet/parser/resource/param.rb +22 -0
  698. data/vendored/puppet/lib/puppet/parser/scope.rb +1112 -0
  699. data/vendored/puppet/lib/puppet/parser/script_compiler.rb +117 -0
  700. data/vendored/puppet/lib/puppet/parser/templatewrapper.rb +101 -0
  701. data/vendored/puppet/lib/puppet/parser/type_loader.rb +149 -0
  702. data/vendored/puppet/lib/puppet/plugins.rb +9 -0
  703. data/vendored/puppet/lib/puppet/plugins/configuration.rb +25 -0
  704. data/vendored/puppet/lib/puppet/plugins/syntax_checkers.rb +98 -0
  705. data/vendored/puppet/lib/puppet/pops.rb +120 -0
  706. data/vendored/puppet/lib/puppet/pops/adaptable.rb +206 -0
  707. data/vendored/puppet/lib/puppet/pops/adapters.rb +138 -0
  708. data/vendored/puppet/lib/puppet/pops/evaluator/access_operator.rb +706 -0
  709. data/vendored/puppet/lib/puppet/pops/evaluator/callable_signature.rb +107 -0
  710. data/vendored/puppet/lib/puppet/pops/evaluator/closure.rb +373 -0
  711. data/vendored/puppet/lib/puppet/pops/evaluator/collector_transformer.rb +233 -0
  712. data/vendored/puppet/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +86 -0
  713. data/vendored/puppet/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +29 -0
  714. data/vendored/puppet/lib/puppet/pops/evaluator/collectors/exported_collector.rb +69 -0
  715. data/vendored/puppet/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +37 -0
  716. data/vendored/puppet/lib/puppet/pops/evaluator/compare_operator.rb +252 -0
  717. data/vendored/puppet/lib/puppet/pops/evaluator/epp_evaluator.rb +94 -0
  718. data/vendored/puppet/lib/puppet/pops/evaluator/evaluator_impl.rb +1258 -0
  719. data/vendored/puppet/lib/puppet/pops/evaluator/external_syntax_support.rb +45 -0
  720. data/vendored/puppet/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +82 -0
  721. data/vendored/puppet/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  722. data/vendored/puppet/lib/puppet/pops/evaluator/puppet_proc.rb +69 -0
  723. data/vendored/puppet/lib/puppet/pops/evaluator/relationship_operator.rb +185 -0
  724. data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_converter.rb +200 -0
  725. data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_resource_support.rb +117 -0
  726. data/vendored/puppet/lib/puppet/pops/evaluator/runtime3_support.rb +538 -0
  727. data/vendored/puppet/lib/puppet/pops/functions/dispatch.rb +100 -0
  728. data/vendored/puppet/lib/puppet/pops/functions/dispatcher.rb +71 -0
  729. data/vendored/puppet/lib/puppet/pops/functions/function.rb +135 -0
  730. data/vendored/puppet/lib/puppet/pops/issue_reporter.rb +115 -0
  731. data/vendored/puppet/lib/puppet/pops/issues.rb +888 -0
  732. data/vendored/puppet/lib/puppet/pops/label_provider.rb +90 -0
  733. data/vendored/puppet/lib/puppet/pops/loader/base_loader.rb +166 -0
  734. data/vendored/puppet/lib/puppet/pops/loader/dependency_loader.rb +92 -0
  735. data/vendored/puppet/lib/puppet/pops/loader/gem_support.rb +49 -0
  736. data/vendored/puppet/lib/puppet/pops/loader/loader.rb +204 -0
  737. data/vendored/puppet/lib/puppet/pops/loader/loader_paths.rb +296 -0
  738. data/vendored/puppet/lib/puppet/pops/loader/module_loaders.rb +452 -0
  739. data/vendored/puppet/lib/puppet/pops/loader/null_loader.rb +60 -0
  740. data/vendored/puppet/lib/puppet/pops/loader/predefined_loader.rb +24 -0
  741. data/vendored/puppet/lib/puppet/pops/loader/puppet_function_instantiator.rb +84 -0
  742. data/vendored/puppet/lib/puppet/pops/loader/puppet_plan_instantiator.rb +84 -0
  743. data/vendored/puppet/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +79 -0
  744. data/vendored/puppet/lib/puppet/pops/loader/ruby_function_instantiator.rb +46 -0
  745. data/vendored/puppet/lib/puppet/pops/loader/runtime3_type_loader.rb +101 -0
  746. data/vendored/puppet/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
  747. data/vendored/puppet/lib/puppet/pops/loader/static_loader.rb +164 -0
  748. data/vendored/puppet/lib/puppet/pops/loader/task_instantiator.rb +117 -0
  749. data/vendored/puppet/lib/puppet/pops/loader/type_definition_instantiator.rb +97 -0
  750. data/vendored/puppet/lib/puppet/pops/loader/typed_name.rb +54 -0
  751. data/vendored/puppet/lib/puppet/pops/loader/uri_helper.rb +22 -0
  752. data/vendored/puppet/lib/puppet/pops/loaders.rb +517 -0
  753. data/vendored/puppet/lib/puppet/pops/lookup.rb +96 -0
  754. data/vendored/puppet/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
  755. data/vendored/puppet/lib/puppet/pops/lookup/context.rb +200 -0
  756. data/vendored/puppet/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  757. data/vendored/puppet/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
  758. data/vendored/puppet/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
  759. data/vendored/puppet/lib/puppet/pops/lookup/data_provider.rb +92 -0
  760. data/vendored/puppet/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
  761. data/vendored/puppet/lib/puppet/pops/lookup/explainer.rb +594 -0
  762. data/vendored/puppet/lib/puppet/pops/lookup/function_provider.rb +110 -0
  763. data/vendored/puppet/lib/puppet/pops/lookup/global_data_provider.rb +75 -0
  764. data/vendored/puppet/lib/puppet/pops/lookup/hiera_config.rb +761 -0
  765. data/vendored/puppet/lib/puppet/pops/lookup/interpolation.rb +154 -0
  766. data/vendored/puppet/lib/puppet/pops/lookup/invocation.rb +261 -0
  767. data/vendored/puppet/lib/puppet/pops/lookup/location_resolver.rb +99 -0
  768. data/vendored/puppet/lib/puppet/pops/lookup/lookup_adapter.rb +472 -0
  769. data/vendored/puppet/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  770. data/vendored/puppet/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
  771. data/vendored/puppet/lib/puppet/pops/lookup/module_data_provider.rb +89 -0
  772. data/vendored/puppet/lib/puppet/pops/lookup/sub_lookup.rb +92 -0
  773. data/vendored/puppet/lib/puppet/pops/merge_strategy.rb +434 -0
  774. data/vendored/puppet/lib/puppet/pops/migration/migration_checker.rb +58 -0
  775. data/vendored/puppet/lib/puppet/pops/model/ast.pp +695 -0
  776. data/vendored/puppet/lib/puppet/pops/model/ast.rb +4870 -0
  777. data/vendored/puppet/lib/puppet/pops/model/ast_transformer.rb +131 -0
  778. data/vendored/puppet/lib/puppet/pops/model/factory.rb +1145 -0
  779. data/vendored/puppet/lib/puppet/pops/model/model_label_provider.rb +132 -0
  780. data/vendored/puppet/lib/puppet/pops/model/model_tree_dumper.rb +463 -0
  781. data/vendored/puppet/lib/puppet/pops/model/tree_dumper.rb +59 -0
  782. data/vendored/puppet/lib/puppet/pops/parser/code_merger.rb +29 -0
  783. data/vendored/puppet/lib/puppet/pops/parser/egrammar.ra +937 -0
  784. data/vendored/puppet/lib/puppet/pops/parser/eparser.rb +3347 -0
  785. data/vendored/puppet/lib/puppet/pops/parser/epp_parser.rb +51 -0
  786. data/vendored/puppet/lib/puppet/pops/parser/epp_support.rb +262 -0
  787. data/vendored/puppet/lib/puppet/pops/parser/evaluating_parser.rb +165 -0
  788. data/vendored/puppet/lib/puppet/pops/parser/heredoc_support.rb +143 -0
  789. data/vendored/puppet/lib/puppet/pops/parser/interpolation_support.rb +244 -0
  790. data/vendored/puppet/lib/puppet/pops/parser/lexer2.rb +796 -0
  791. data/vendored/puppet/lib/puppet/pops/parser/lexer_support.rb +220 -0
  792. data/vendored/puppet/lib/puppet/pops/parser/locatable.rb +23 -0
  793. data/vendored/puppet/lib/puppet/pops/parser/locator.rb +344 -0
  794. data/vendored/puppet/lib/puppet/pops/parser/parser_support.rb +247 -0
  795. data/vendored/puppet/lib/puppet/pops/parser/slurp_support.rb +120 -0
  796. data/vendored/puppet/lib/puppet/pops/patterns.rb +60 -0
  797. data/vendored/puppet/lib/puppet/pops/pcore.rb +107 -0
  798. data/vendored/puppet/lib/puppet/pops/puppet_stack.rb +43 -0
  799. data/vendored/puppet/lib/puppet/pops/resource/param.rb +55 -0
  800. data/vendored/puppet/lib/puppet/pops/resource/resource_type_impl.rb +314 -0
  801. data/vendored/puppet/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
  802. data/vendored/puppet/lib/puppet/pops/semantic_error.rb +29 -0
  803. data/vendored/puppet/lib/puppet/pops/serialization.rb +41 -0
  804. data/vendored/puppet/lib/puppet/pops/serialization/abstract_reader.rb +176 -0
  805. data/vendored/puppet/lib/puppet/pops/serialization/abstract_writer.rb +215 -0
  806. data/vendored/puppet/lib/puppet/pops/serialization/deserializer.rb +80 -0
  807. data/vendored/puppet/lib/puppet/pops/serialization/extension.rb +157 -0
  808. data/vendored/puppet/lib/puppet/pops/serialization/from_data_converter.rb +169 -0
  809. data/vendored/puppet/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  810. data/vendored/puppet/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  811. data/vendored/puppet/lib/puppet/pops/serialization/json.rb +297 -0
  812. data/vendored/puppet/lib/puppet/pops/serialization/json_path.rb +126 -0
  813. data/vendored/puppet/lib/puppet/pops/serialization/object.rb +71 -0
  814. data/vendored/puppet/lib/puppet/pops/serialization/serializer.rb +139 -0
  815. data/vendored/puppet/lib/puppet/pops/serialization/time_factory.rb +67 -0
  816. data/vendored/puppet/lib/puppet/pops/serialization/to_data_converter.rb +301 -0
  817. data/vendored/puppet/lib/puppet/pops/time/timespan.rb +718 -0
  818. data/vendored/puppet/lib/puppet/pops/time/timestamp.rb +160 -0
  819. data/vendored/puppet/lib/puppet/pops/types/annotatable.rb +36 -0
  820. data/vendored/puppet/lib/puppet/pops/types/annotation.rb +71 -0
  821. data/vendored/puppet/lib/puppet/pops/types/class_loader.rb +129 -0
  822. data/vendored/puppet/lib/puppet/pops/types/enumeration.rb +16 -0
  823. data/vendored/puppet/lib/puppet/pops/types/execution_result.rb +126 -0
  824. data/vendored/puppet/lib/puppet/pops/types/implementation_registry.rb +141 -0
  825. data/vendored/puppet/lib/puppet/pops/types/iterable.rb +330 -0
  826. data/vendored/puppet/lib/puppet/pops/types/p_binary_type.rb +226 -0
  827. data/vendored/puppet/lib/puppet/pops/types/p_error_type.rb +146 -0
  828. data/vendored/puppet/lib/puppet/pops/types/p_init_type.rb +238 -0
  829. data/vendored/puppet/lib/puppet/pops/types/p_meta_type.rb +90 -0
  830. data/vendored/puppet/lib/puppet/pops/types/p_object_type.rb +976 -0
  831. data/vendored/puppet/lib/puppet/pops/types/p_runtime_type.rb +115 -0
  832. data/vendored/puppet/lib/puppet/pops/types/p_sem_ver_range_type.rb +191 -0
  833. data/vendored/puppet/lib/puppet/pops/types/p_sem_ver_type.rb +141 -0
  834. data/vendored/puppet/lib/puppet/pops/types/p_sensitive_type.rb +73 -0
  835. data/vendored/puppet/lib/puppet/pops/types/p_timespan_type.rb +192 -0
  836. data/vendored/puppet/lib/puppet/pops/types/p_timestamp_type.rb +73 -0
  837. data/vendored/puppet/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  838. data/vendored/puppet/lib/puppet/pops/types/puppet_object.rb +30 -0
  839. data/vendored/puppet/lib/puppet/pops/types/recursion_guard.rb +136 -0
  840. data/vendored/puppet/lib/puppet/pops/types/ruby_generator.rb +432 -0
  841. data/vendored/puppet/lib/puppet/pops/types/ruby_method.rb +31 -0
  842. data/vendored/puppet/lib/puppet/pops/types/string_converter.rb +1102 -0
  843. data/vendored/puppet/lib/puppet/pops/types/task.rb +116 -0
  844. data/vendored/puppet/lib/puppet/pops/types/tree_iterators.rb +250 -0
  845. data/vendored/puppet/lib/puppet/pops/types/type_acceptor.rb +25 -0
  846. data/vendored/puppet/lib/puppet/pops/types/type_asserter.rb +47 -0
  847. data/vendored/puppet/lib/puppet/pops/types/type_assertion_error.rb +27 -0
  848. data/vendored/puppet/lib/puppet/pops/types/type_calculator.rb +799 -0
  849. data/vendored/puppet/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  850. data/vendored/puppet/lib/puppet/pops/types/type_factory.rb +599 -0
  851. data/vendored/puppet/lib/puppet/pops/types/type_formatter.rb +769 -0
  852. data/vendored/puppet/lib/puppet/pops/types/type_mismatch_describer.rb +1062 -0
  853. data/vendored/puppet/lib/puppet/pops/types/type_parser.rb +602 -0
  854. data/vendored/puppet/lib/puppet/pops/types/type_set_reference.rb +59 -0
  855. data/vendored/puppet/lib/puppet/pops/types/types.rb +3519 -0
  856. data/vendored/puppet/lib/puppet/pops/utils.rb +119 -0
  857. data/vendored/puppet/lib/puppet/pops/validation.rb +464 -0
  858. data/vendored/puppet/lib/puppet/pops/validation/checker4_0.rb +996 -0
  859. data/vendored/puppet/lib/puppet/pops/validation/tasks_checker.rb +60 -0
  860. data/vendored/puppet/lib/puppet/pops/validation/validator_factory_4_0.rb +43 -0
  861. data/vendored/puppet/lib/puppet/pops/visitable.rb +6 -0
  862. data/vendored/puppet/lib/puppet/pops/visitor.rb +116 -0
  863. data/vendored/puppet/lib/puppet/property.rb +600 -0
  864. data/vendored/puppet/lib/puppet/property/boolean.rb +7 -0
  865. data/vendored/puppet/lib/puppet/property/ensure.rb +105 -0
  866. data/vendored/puppet/lib/puppet/property/keyvalue.rb +95 -0
  867. data/vendored/puppet/lib/puppet/property/list.rb +69 -0
  868. data/vendored/puppet/lib/puppet/property/ordered_list.rb +29 -0
  869. data/vendored/puppet/lib/puppet/provider.rb +603 -0
  870. data/vendored/puppet/lib/puppet/provider/aixobject.rb +392 -0
  871. data/vendored/puppet/lib/puppet/provider/augeas/augeas.rb +567 -0
  872. data/vendored/puppet/lib/puppet/provider/cisco.rb +9 -0
  873. data/vendored/puppet/lib/puppet/provider/command.rb +25 -0
  874. data/vendored/puppet/lib/puppet/provider/computer/computer.rb +20 -0
  875. data/vendored/puppet/lib/puppet/provider/confine.rb +6 -0
  876. data/vendored/puppet/lib/puppet/provider/cron/crontab.rb +297 -0
  877. data/vendored/puppet/lib/puppet/provider/exec.rb +98 -0
  878. data/vendored/puppet/lib/puppet/provider/exec/posix.rb +48 -0
  879. data/vendored/puppet/lib/puppet/provider/exec/shell.rb +25 -0
  880. data/vendored/puppet/lib/puppet/provider/exec/windows.rb +55 -0
  881. data/vendored/puppet/lib/puppet/provider/file/posix.rb +136 -0
  882. data/vendored/puppet/lib/puppet/provider/file/windows.rb +104 -0
  883. data/vendored/puppet/lib/puppet/provider/group/aix.rb +141 -0
  884. data/vendored/puppet/lib/puppet/provider/group/directoryservice.rb +22 -0
  885. data/vendored/puppet/lib/puppet/provider/group/groupadd.rb +85 -0
  886. data/vendored/puppet/lib/puppet/provider/group/ldap.rb +45 -0
  887. data/vendored/puppet/lib/puppet/provider/group/pw.rb +49 -0
  888. data/vendored/puppet/lib/puppet/provider/group/windows_adsi.rb +109 -0
  889. data/vendored/puppet/lib/puppet/provider/host/parsed.rb +46 -0
  890. data/vendored/puppet/lib/puppet/provider/interface/cisco.rb +27 -0
  891. data/vendored/puppet/lib/puppet/provider/ldap.rb +137 -0
  892. data/vendored/puppet/lib/puppet/provider/macauthorization/macauthorization.rb +298 -0
  893. data/vendored/puppet/lib/puppet/provider/mailalias/aliases.rb +50 -0
  894. data/vendored/puppet/lib/puppet/provider/maillist/mailman.rb +108 -0
  895. data/vendored/puppet/lib/puppet/provider/mcx/mcxcontent.rb +173 -0
  896. data/vendored/puppet/lib/puppet/provider/mount.rb +59 -0
  897. data/vendored/puppet/lib/puppet/provider/mount/parsed.rb +282 -0
  898. data/vendored/puppet/lib/puppet/provider/naginator.rb +63 -0
  899. data/vendored/puppet/lib/puppet/provider/nameservice.rb +317 -0
  900. data/vendored/puppet/lib/puppet/provider/nameservice/directoryservice.rb +507 -0
  901. data/vendored/puppet/lib/puppet/provider/nameservice/objectadd.rb +33 -0
  902. data/vendored/puppet/lib/puppet/provider/nameservice/pw.rb +21 -0
  903. data/vendored/puppet/lib/puppet/provider/network_device.rb +72 -0
  904. data/vendored/puppet/lib/puppet/provider/package.rb +56 -0
  905. data/vendored/puppet/lib/puppet/provider/package/aix.rb +152 -0
  906. data/vendored/puppet/lib/puppet/provider/package/appdmg.rb +110 -0
  907. data/vendored/puppet/lib/puppet/provider/package/apple.rb +47 -0
  908. data/vendored/puppet/lib/puppet/provider/package/apt.rb +116 -0
  909. data/vendored/puppet/lib/puppet/provider/package/aptitude.rb +29 -0
  910. data/vendored/puppet/lib/puppet/provider/package/aptrpm.rb +83 -0
  911. data/vendored/puppet/lib/puppet/provider/package/blastwave.rb +111 -0
  912. data/vendored/puppet/lib/puppet/provider/package/dnf.rb +46 -0
  913. data/vendored/puppet/lib/puppet/provider/package/dpkg.rb +165 -0
  914. data/vendored/puppet/lib/puppet/provider/package/fink.rb +79 -0
  915. data/vendored/puppet/lib/puppet/provider/package/freebsd.rb +47 -0
  916. data/vendored/puppet/lib/puppet/provider/package/gem.rb +175 -0
  917. data/vendored/puppet/lib/puppet/provider/package/hpux.rb +44 -0
  918. data/vendored/puppet/lib/puppet/provider/package/macports.rb +107 -0
  919. data/vendored/puppet/lib/puppet/provider/package/nim.rb +283 -0
  920. data/vendored/puppet/lib/puppet/provider/package/openbsd.rb +242 -0
  921. data/vendored/puppet/lib/puppet/provider/package/opkg.rb +81 -0
  922. data/vendored/puppet/lib/puppet/provider/package/pacman.rb +267 -0
  923. data/vendored/puppet/lib/puppet/provider/package/pip.rb +188 -0
  924. data/vendored/puppet/lib/puppet/provider/package/pip3.rb +20 -0
  925. data/vendored/puppet/lib/puppet/provider/package/pkg.rb +249 -0
  926. data/vendored/puppet/lib/puppet/provider/package/pkgdmg.rb +152 -0
  927. data/vendored/puppet/lib/puppet/provider/package/pkgin.rb +87 -0
  928. data/vendored/puppet/lib/puppet/provider/package/pkgng.rb +143 -0
  929. data/vendored/puppet/lib/puppet/provider/package/pkgutil.rb +186 -0
  930. data/vendored/puppet/lib/puppet/provider/package/portage.rb +301 -0
  931. data/vendored/puppet/lib/puppet/provider/package/ports.rb +91 -0
  932. data/vendored/puppet/lib/puppet/provider/package/portupgrade.rb +239 -0
  933. data/vendored/puppet/lib/puppet/provider/package/puppet_gem.rb +17 -0
  934. data/vendored/puppet/lib/puppet/provider/package/rpm.rb +405 -0
  935. data/vendored/puppet/lib/puppet/provider/package/rug.rb +51 -0
  936. data/vendored/puppet/lib/puppet/provider/package/sun.rb +133 -0
  937. data/vendored/puppet/lib/puppet/provider/package/sunfreeware.rb +9 -0
  938. data/vendored/puppet/lib/puppet/provider/package/tdnf.rb +28 -0
  939. data/vendored/puppet/lib/puppet/provider/package/up2date.rb +40 -0
  940. data/vendored/puppet/lib/puppet/provider/package/urpmi.rb +55 -0
  941. data/vendored/puppet/lib/puppet/provider/package/windows.rb +113 -0
  942. data/vendored/puppet/lib/puppet/provider/package/windows/exe_package.rb +71 -0
  943. data/vendored/puppet/lib/puppet/provider/package/windows/msi_package.rb +62 -0
  944. data/vendored/puppet/lib/puppet/provider/package/windows/package.rb +100 -0
  945. data/vendored/puppet/lib/puppet/provider/package/yum.rb +278 -0
  946. data/vendored/puppet/lib/puppet/provider/package/zypper.rb +145 -0
  947. data/vendored/puppet/lib/puppet/provider/parsedfile.rb +459 -0
  948. data/vendored/puppet/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +590 -0
  949. data/vendored/puppet/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
  950. data/vendored/puppet/lib/puppet/provider/selmodule/semodule.rb +138 -0
  951. data/vendored/puppet/lib/puppet/provider/service/base.rb +121 -0
  952. data/vendored/puppet/lib/puppet/provider/service/bsd.rb +51 -0
  953. data/vendored/puppet/lib/puppet/provider/service/daemontools.rb +194 -0
  954. data/vendored/puppet/lib/puppet/provider/service/debian.rb +74 -0
  955. data/vendored/puppet/lib/puppet/provider/service/freebsd.rb +143 -0
  956. data/vendored/puppet/lib/puppet/provider/service/gentoo.rb +45 -0
  957. data/vendored/puppet/lib/puppet/provider/service/init.rb +193 -0
  958. data/vendored/puppet/lib/puppet/provider/service/launchd.rb +346 -0
  959. data/vendored/puppet/lib/puppet/provider/service/openbsd.rb +100 -0
  960. data/vendored/puppet/lib/puppet/provider/service/openrc.rb +71 -0
  961. data/vendored/puppet/lib/puppet/provider/service/openwrt.rb +36 -0
  962. data/vendored/puppet/lib/puppet/provider/service/rcng.rb +51 -0
  963. data/vendored/puppet/lib/puppet/provider/service/redhat.rb +71 -0
  964. data/vendored/puppet/lib/puppet/provider/service/runit.rb +111 -0
  965. data/vendored/puppet/lib/puppet/provider/service/service.rb +42 -0
  966. data/vendored/puppet/lib/puppet/provider/service/smf.rb +167 -0
  967. data/vendored/puppet/lib/puppet/provider/service/src.rb +147 -0
  968. data/vendored/puppet/lib/puppet/provider/service/systemd.rb +186 -0
  969. data/vendored/puppet/lib/puppet/provider/service/upstart.rb +359 -0
  970. data/vendored/puppet/lib/puppet/provider/service/windows.rb +106 -0
  971. data/vendored/puppet/lib/puppet/provider/ssh_authorized_key/parsed.rb +105 -0
  972. data/vendored/puppet/lib/puppet/provider/sshkey/parsed.rb +50 -0
  973. data/vendored/puppet/lib/puppet/provider/user/aix.rb +375 -0
  974. data/vendored/puppet/lib/puppet/provider/user/directoryservice.rb +632 -0
  975. data/vendored/puppet/lib/puppet/provider/user/hpux.rb +95 -0
  976. data/vendored/puppet/lib/puppet/provider/user/ldap.rb +128 -0
  977. data/vendored/puppet/lib/puppet/provider/user/openbsd.rb +75 -0
  978. data/vendored/puppet/lib/puppet/provider/user/pw.rb +98 -0
  979. data/vendored/puppet/lib/puppet/provider/user/user_role_add.rb +227 -0
  980. data/vendored/puppet/lib/puppet/provider/user/useradd.rb +231 -0
  981. data/vendored/puppet/lib/puppet/provider/user/windows_adsi.rb +148 -0
  982. data/vendored/puppet/lib/puppet/provider/vlan/cisco.rb +28 -0
  983. data/vendored/puppet/lib/puppet/provider/yumrepo/inifile.rb +304 -0
  984. data/vendored/puppet/lib/puppet/provider/zfs/zfs.rb +84 -0
  985. data/vendored/puppet/lib/puppet/provider/zone/solaris.rb +364 -0
  986. data/vendored/puppet/lib/puppet/provider/zpool/zpool.rb +125 -0
  987. data/vendored/puppet/lib/puppet/reference/configuration.rb +82 -0
  988. data/vendored/puppet/lib/puppet/reference/function.rb +17 -0
  989. data/vendored/puppet/lib/puppet/reference/indirection.rb +71 -0
  990. data/vendored/puppet/lib/puppet/reference/metaparameter.rb +35 -0
  991. data/vendored/puppet/lib/puppet/reference/providers.rb +118 -0
  992. data/vendored/puppet/lib/puppet/reference/report.rb +20 -0
  993. data/vendored/puppet/lib/puppet/reference/type.rb +114 -0
  994. data/vendored/puppet/lib/puppet/relationship.rb +88 -0
  995. data/vendored/puppet/lib/puppet/reports.rb +93 -0
  996. data/vendored/puppet/lib/puppet/reports/http.rb +37 -0
  997. data/vendored/puppet/lib/puppet/reports/log.rb +14 -0
  998. data/vendored/puppet/lib/puppet/reports/store.rb +68 -0
  999. data/vendored/puppet/lib/puppet/resource.rb +669 -0
  1000. data/vendored/puppet/lib/puppet/resource/capability_finder.rb +147 -0
  1001. data/vendored/puppet/lib/puppet/resource/catalog.rb +667 -0
  1002. data/vendored/puppet/lib/puppet/resource/status.rb +221 -0
  1003. data/vendored/puppet/lib/puppet/resource/type.rb +524 -0
  1004. data/vendored/puppet/lib/puppet/resource/type_collection.rb +263 -0
  1005. data/vendored/puppet/lib/puppet/scheduler.rb +16 -0
  1006. data/vendored/puppet/lib/puppet/scheduler/job.rb +53 -0
  1007. data/vendored/puppet/lib/puppet/scheduler/scheduler.rb +44 -0
  1008. data/vendored/puppet/lib/puppet/scheduler/splay_job.rb +32 -0
  1009. data/vendored/puppet/lib/puppet/scheduler/timer.rb +13 -0
  1010. data/vendored/puppet/lib/puppet/settings.rb +1457 -0
  1011. data/vendored/puppet/lib/puppet/settings/array_setting.rb +17 -0
  1012. data/vendored/puppet/lib/puppet/settings/autosign_setting.rb +22 -0
  1013. data/vendored/puppet/lib/puppet/settings/base_setting.rb +177 -0
  1014. data/vendored/puppet/lib/puppet/settings/boolean_setting.rb +32 -0
  1015. data/vendored/puppet/lib/puppet/settings/certificate_revocation_setting.rb +21 -0
  1016. data/vendored/puppet/lib/puppet/settings/config_file.rb +143 -0
  1017. data/vendored/puppet/lib/puppet/settings/directory_setting.rb +18 -0
  1018. data/vendored/puppet/lib/puppet/settings/duration_setting.rb +32 -0
  1019. data/vendored/puppet/lib/puppet/settings/enum_setting.rb +16 -0
  1020. data/vendored/puppet/lib/puppet/settings/environment_conf.rb +204 -0
  1021. data/vendored/puppet/lib/puppet/settings/errors.rb +11 -0
  1022. data/vendored/puppet/lib/puppet/settings/file_or_directory_setting.rb +40 -0
  1023. data/vendored/puppet/lib/puppet/settings/file_setting.rb +245 -0
  1024. data/vendored/puppet/lib/puppet/settings/ini_file.rb +200 -0
  1025. data/vendored/puppet/lib/puppet/settings/path_setting.rb +8 -0
  1026. data/vendored/puppet/lib/puppet/settings/priority_setting.rb +42 -0
  1027. data/vendored/puppet/lib/puppet/settings/server_list_setting.rb +20 -0
  1028. data/vendored/puppet/lib/puppet/settings/string_setting.rb +9 -0
  1029. data/vendored/puppet/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  1030. data/vendored/puppet/lib/puppet/settings/terminus_setting.rb +14 -0
  1031. data/vendored/puppet/lib/puppet/settings/ttl_setting.rb +46 -0
  1032. data/vendored/puppet/lib/puppet/settings/value_translator.rb +15 -0
  1033. data/vendored/puppet/lib/puppet/ssl.rb +13 -0
  1034. data/vendored/puppet/lib/puppet/ssl/base.rb +153 -0
  1035. data/vendored/puppet/lib/puppet/ssl/certificate.rb +95 -0
  1036. data/vendored/puppet/lib/puppet/ssl/certificate_authority.rb +553 -0
  1037. data/vendored/puppet/lib/puppet/ssl/certificate_authority/autosign_command.rb +45 -0
  1038. data/vendored/puppet/lib/puppet/ssl/certificate_authority/interface.rb +324 -0
  1039. data/vendored/puppet/lib/puppet/ssl/certificate_factory.rb +219 -0
  1040. data/vendored/puppet/lib/puppet/ssl/certificate_request.rb +327 -0
  1041. data/vendored/puppet/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
  1042. data/vendored/puppet/lib/puppet/ssl/certificate_revocation_list.rb +111 -0
  1043. data/vendored/puppet/lib/puppet/ssl/certificate_signer.rb +27 -0
  1044. data/vendored/puppet/lib/puppet/ssl/configuration.rb +61 -0
  1045. data/vendored/puppet/lib/puppet/ssl/digest.rb +20 -0
  1046. data/vendored/puppet/lib/puppet/ssl/host.rb +400 -0
  1047. data/vendored/puppet/lib/puppet/ssl/inventory.rb +55 -0
  1048. data/vendored/puppet/lib/puppet/ssl/key.rb +63 -0
  1049. data/vendored/puppet/lib/puppet/ssl/oids.rb +187 -0
  1050. data/vendored/puppet/lib/puppet/ssl/validator.rb +60 -0
  1051. data/vendored/puppet/lib/puppet/ssl/validator/default_validator.rb +173 -0
  1052. data/vendored/puppet/lib/puppet/ssl/validator/no_validator.rb +20 -0
  1053. data/vendored/puppet/lib/puppet/status.rb +40 -0
  1054. data/vendored/puppet/lib/puppet/syntax_checkers.rb +3 -0
  1055. data/vendored/puppet/lib/puppet/syntax_checkers/base64.rb +41 -0
  1056. data/vendored/puppet/lib/puppet/syntax_checkers/json.rb +35 -0
  1057. data/vendored/puppet/lib/puppet/test/test_helper.rb +252 -0
  1058. data/vendored/puppet/lib/puppet/transaction.rb +417 -0
  1059. data/vendored/puppet/lib/puppet/transaction/additional_resource_generator.rb +220 -0
  1060. data/vendored/puppet/lib/puppet/transaction/event.rb +144 -0
  1061. data/vendored/puppet/lib/puppet/transaction/event_manager.rb +167 -0
  1062. data/vendored/puppet/lib/puppet/transaction/persistence.rb +84 -0
  1063. data/vendored/puppet/lib/puppet/transaction/report.rb +460 -0
  1064. data/vendored/puppet/lib/puppet/transaction/resource_harness.rb +318 -0
  1065. data/vendored/puppet/lib/puppet/type.rb +2664 -0
  1066. data/vendored/puppet/lib/puppet/type/augeas.rb +211 -0
  1067. data/vendored/puppet/lib/puppet/type/component.rb +88 -0
  1068. data/vendored/puppet/lib/puppet/type/computer.rb +66 -0
  1069. data/vendored/puppet/lib/puppet/type/cron.rb +475 -0
  1070. data/vendored/puppet/lib/puppet/type/exec.rb +622 -0
  1071. data/vendored/puppet/lib/puppet/type/file.rb +1039 -0
  1072. data/vendored/puppet/lib/puppet/type/file/checksum.rb +44 -0
  1073. data/vendored/puppet/lib/puppet/type/file/checksum_value.rb +53 -0
  1074. data/vendored/puppet/lib/puppet/type/file/content.rb +160 -0
  1075. data/vendored/puppet/lib/puppet/type/file/ctime.rb +20 -0
  1076. data/vendored/puppet/lib/puppet/type/file/data_sync.rb +92 -0
  1077. data/vendored/puppet/lib/puppet/type/file/ensure.rb +192 -0
  1078. data/vendored/puppet/lib/puppet/type/file/group.rb +41 -0
  1079. data/vendored/puppet/lib/puppet/type/file/mode.rb +177 -0
  1080. data/vendored/puppet/lib/puppet/type/file/mtime.rb +18 -0
  1081. data/vendored/puppet/lib/puppet/type/file/owner.rb +44 -0
  1082. data/vendored/puppet/lib/puppet/type/file/selcontext.rb +141 -0
  1083. data/vendored/puppet/lib/puppet/type/file/source.rb +356 -0
  1084. data/vendored/puppet/lib/puppet/type/file/target.rb +87 -0
  1085. data/vendored/puppet/lib/puppet/type/file/type.rb +19 -0
  1086. data/vendored/puppet/lib/puppet/type/filebucket.rb +117 -0
  1087. data/vendored/puppet/lib/puppet/type/group.rb +206 -0
  1088. data/vendored/puppet/lib/puppet/type/host.rb +95 -0
  1089. data/vendored/puppet/lib/puppet/type/interface.rb +121 -0
  1090. data/vendored/puppet/lib/puppet/type/k5login.rb +88 -0
  1091. data/vendored/puppet/lib/puppet/type/macauthorization.rb +167 -0
  1092. data/vendored/puppet/lib/puppet/type/mailalias.rb +46 -0
  1093. data/vendored/puppet/lib/puppet/type/maillist.rb +62 -0
  1094. data/vendored/puppet/lib/puppet/type/mcx.rb +98 -0
  1095. data/vendored/puppet/lib/puppet/type/mount.rb +310 -0
  1096. data/vendored/puppet/lib/puppet/type/nagios_command.rb +3 -0
  1097. data/vendored/puppet/lib/puppet/type/nagios_contact.rb +3 -0
  1098. data/vendored/puppet/lib/puppet/type/nagios_contactgroup.rb +3 -0
  1099. data/vendored/puppet/lib/puppet/type/nagios_host.rb +3 -0
  1100. data/vendored/puppet/lib/puppet/type/nagios_hostdependency.rb +3 -0
  1101. data/vendored/puppet/lib/puppet/type/nagios_hostescalation.rb +3 -0
  1102. data/vendored/puppet/lib/puppet/type/nagios_hostextinfo.rb +3 -0
  1103. data/vendored/puppet/lib/puppet/type/nagios_hostgroup.rb +3 -0
  1104. data/vendored/puppet/lib/puppet/type/nagios_service.rb +3 -0
  1105. data/vendored/puppet/lib/puppet/type/nagios_servicedependency.rb +3 -0
  1106. data/vendored/puppet/lib/puppet/type/nagios_serviceescalation.rb +3 -0
  1107. data/vendored/puppet/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
  1108. data/vendored/puppet/lib/puppet/type/nagios_servicegroup.rb +3 -0
  1109. data/vendored/puppet/lib/puppet/type/nagios_timeperiod.rb +3 -0
  1110. data/vendored/puppet/lib/puppet/type/notify.rb +46 -0
  1111. data/vendored/puppet/lib/puppet/type/package.rb +571 -0
  1112. data/vendored/puppet/lib/puppet/type/resources.rb +180 -0
  1113. data/vendored/puppet/lib/puppet/type/router.rb +17 -0
  1114. data/vendored/puppet/lib/puppet/type/schedule.rb +469 -0
  1115. data/vendored/puppet/lib/puppet/type/scheduled_task.rb +183 -0
  1116. data/vendored/puppet/lib/puppet/type/selboolean.rb +26 -0
  1117. data/vendored/puppet/lib/puppet/type/selmodule.rb +59 -0
  1118. data/vendored/puppet/lib/puppet/type/service.rb +258 -0
  1119. data/vendored/puppet/lib/puppet/type/ssh_authorized_key.rb +143 -0
  1120. data/vendored/puppet/lib/puppet/type/sshkey.rb +83 -0
  1121. data/vendored/puppet/lib/puppet/type/stage.rb +27 -0
  1122. data/vendored/puppet/lib/puppet/type/tidy.rb +336 -0
  1123. data/vendored/puppet/lib/puppet/type/user.rb +770 -0
  1124. data/vendored/puppet/lib/puppet/type/vlan.rb +26 -0
  1125. data/vendored/puppet/lib/puppet/type/whit.rb +34 -0
  1126. data/vendored/puppet/lib/puppet/type/yumrepo.rb +409 -0
  1127. data/vendored/puppet/lib/puppet/type/zfs.rb +150 -0
  1128. data/vendored/puppet/lib/puppet/type/zone.rb +382 -0
  1129. data/vendored/puppet/lib/puppet/type/zpool.rb +91 -0
  1130. data/vendored/puppet/lib/puppet/util.rb +705 -0
  1131. data/vendored/puppet/lib/puppet/util/at_fork.rb +35 -0
  1132. data/vendored/puppet/lib/puppet/util/at_fork/noop.rb +18 -0
  1133. data/vendored/puppet/lib/puppet/util/at_fork/solaris.rb +158 -0
  1134. data/vendored/puppet/lib/puppet/util/autoload.rb +226 -0
  1135. data/vendored/puppet/lib/puppet/util/backups.rb +86 -0
  1136. data/vendored/puppet/lib/puppet/util/character_encoding.rb +98 -0
  1137. data/vendored/puppet/lib/puppet/util/checksums.rb +282 -0
  1138. data/vendored/puppet/lib/puppet/util/classgen.rb +228 -0
  1139. data/vendored/puppet/lib/puppet/util/colors.rb +100 -0
  1140. data/vendored/puppet/lib/puppet/util/command_line.rb +185 -0
  1141. data/vendored/puppet/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
  1142. data/vendored/puppet/lib/puppet/util/command_line/trollop.rb +824 -0
  1143. data/vendored/puppet/lib/puppet/util/constant_inflector.rb +24 -0
  1144. data/vendored/puppet/lib/puppet/util/diff.rb +79 -0
  1145. data/vendored/puppet/lib/puppet/util/docs.rb +128 -0
  1146. data/vendored/puppet/lib/puppet/util/errors.rb +108 -0
  1147. data/vendored/puppet/lib/puppet/util/execution.rb +412 -0
  1148. data/vendored/puppet/lib/puppet/util/execution_stub.rb +26 -0
  1149. data/vendored/puppet/lib/puppet/util/feature.rb +95 -0
  1150. data/vendored/puppet/lib/puppet/util/file_watcher.rb +28 -0
  1151. data/vendored/puppet/lib/puppet/util/fileparsing.rb +377 -0
  1152. data/vendored/puppet/lib/puppet/util/filetype.rb +309 -0
  1153. data/vendored/puppet/lib/puppet/util/http_proxy.rb +197 -0
  1154. data/vendored/puppet/lib/puppet/util/inifile.rb +341 -0
  1155. data/vendored/puppet/lib/puppet/util/instance_loader.rb +81 -0
  1156. data/vendored/puppet/lib/puppet/util/json_lockfile.rb +44 -0
  1157. data/vendored/puppet/lib/puppet/util/ldap.rb +2 -0
  1158. data/vendored/puppet/lib/puppet/util/ldap/connection.rb +71 -0
  1159. data/vendored/puppet/lib/puppet/util/ldap/generator.rb +42 -0
  1160. data/vendored/puppet/lib/puppet/util/ldap/manager.rb +278 -0
  1161. data/vendored/puppet/lib/puppet/util/libuser.conf +15 -0
  1162. data/vendored/puppet/lib/puppet/util/libuser.rb +12 -0
  1163. data/vendored/puppet/lib/puppet/util/limits.rb +12 -0
  1164. data/vendored/puppet/lib/puppet/util/lockfile.rb +66 -0
  1165. data/vendored/puppet/lib/puppet/util/log.rb +423 -0
  1166. data/vendored/puppet/lib/puppet/util/log/destination.rb +49 -0
  1167. data/vendored/puppet/lib/puppet/util/log/destinations.rb +249 -0
  1168. data/vendored/puppet/lib/puppet/util/logging.rb +318 -0
  1169. data/vendored/puppet/lib/puppet/util/metaid.rb +21 -0
  1170. data/vendored/puppet/lib/puppet/util/methodhelper.rb +32 -0
  1171. data/vendored/puppet/lib/puppet/util/metric.rb +64 -0
  1172. data/vendored/puppet/lib/puppet/util/monkey_patches.rb +108 -0
  1173. data/vendored/puppet/lib/puppet/util/multi_match.rb +51 -0
  1174. data/vendored/puppet/lib/puppet/util/nagios_maker.rb +85 -0
  1175. data/vendored/puppet/lib/puppet/util/network_device.rb +17 -0
  1176. data/vendored/puppet/lib/puppet/util/network_device/base.rb +23 -0
  1177. data/vendored/puppet/lib/puppet/util/network_device/cisco.rb +4 -0
  1178. data/vendored/puppet/lib/puppet/util/network_device/cisco/device.rb +285 -0
  1179. data/vendored/puppet/lib/puppet/util/network_device/cisco/facts.rb +72 -0
  1180. data/vendored/puppet/lib/puppet/util/network_device/cisco/interface.rb +94 -0
  1181. data/vendored/puppet/lib/puppet/util/network_device/config.rb +98 -0
  1182. data/vendored/puppet/lib/puppet/util/network_device/ipcalc.rb +68 -0
  1183. data/vendored/puppet/lib/puppet/util/network_device/transport.rb +5 -0
  1184. data/vendored/puppet/lib/puppet/util/network_device/transport/base.rb +26 -0
  1185. data/vendored/puppet/lib/puppet/util/network_device/transport/ssh.rb +126 -0
  1186. data/vendored/puppet/lib/puppet/util/network_device/transport/telnet.rb +47 -0
  1187. data/vendored/puppet/lib/puppet/util/package.rb +31 -0
  1188. data/vendored/puppet/lib/puppet/util/pidlock.rb +62 -0
  1189. data/vendored/puppet/lib/puppet/util/platform.rb +22 -0
  1190. data/vendored/puppet/lib/puppet/util/plist.rb +153 -0
  1191. data/vendored/puppet/lib/puppet/util/posix.rb +137 -0
  1192. data/vendored/puppet/lib/puppet/util/profiler.rb +53 -0
  1193. data/vendored/puppet/lib/puppet/util/profiler/aggregate.rb +85 -0
  1194. data/vendored/puppet/lib/puppet/util/profiler/around_profiler.rb +67 -0
  1195. data/vendored/puppet/lib/puppet/util/profiler/logging.rb +48 -0
  1196. data/vendored/puppet/lib/puppet/util/profiler/object_counts.rb +17 -0
  1197. data/vendored/puppet/lib/puppet/util/profiler/wall_clock.rb +35 -0
  1198. data/vendored/puppet/lib/puppet/util/provider_features.rb +184 -0
  1199. data/vendored/puppet/lib/puppet/util/psych_support.rb +30 -0
  1200. data/vendored/puppet/lib/puppet/util/rdoc.rb +60 -0
  1201. data/vendored/puppet/lib/puppet/util/rdoc/code_objects.rb +294 -0
  1202. data/vendored/puppet/lib/puppet/util/rdoc/generators/puppet_generator.rb +910 -0
  1203. data/vendored/puppet/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
  1204. data/vendored/puppet/lib/puppet/util/rdoc/parser.rb +12 -0
  1205. data/vendored/puppet/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +259 -0
  1206. data/vendored/puppet/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  1207. data/vendored/puppet/lib/puppet/util/reference.rb +126 -0
  1208. data/vendored/puppet/lib/puppet/util/resource_template.rb +61 -0
  1209. data/vendored/puppet/lib/puppet/util/retry_action.rb +46 -0
  1210. data/vendored/puppet/lib/puppet/util/rubygems.rb +75 -0
  1211. data/vendored/puppet/lib/puppet/util/run_mode.rb +110 -0
  1212. data/vendored/puppet/lib/puppet/util/selinux.rb +264 -0
  1213. data/vendored/puppet/lib/puppet/util/skip_tags.rb +9 -0
  1214. data/vendored/puppet/lib/puppet/util/splayer.rb +18 -0
  1215. data/vendored/puppet/lib/puppet/util/ssl.rb +53 -0
  1216. data/vendored/puppet/lib/puppet/util/storage.rb +89 -0
  1217. data/vendored/puppet/lib/puppet/util/suidmanager.rb +165 -0
  1218. data/vendored/puppet/lib/puppet/util/symbolic_file_mode.rb +144 -0
  1219. data/vendored/puppet/lib/puppet/util/tag_set.rb +27 -0
  1220. data/vendored/puppet/lib/puppet/util/tagging.rb +118 -0
  1221. data/vendored/puppet/lib/puppet/util/terminal.rb +16 -0
  1222. data/vendored/puppet/lib/puppet/util/user_attr.rb +21 -0
  1223. data/vendored/puppet/lib/puppet/util/warnings.rb +33 -0
  1224. data/vendored/puppet/lib/puppet/util/watched_file.rb +37 -0
  1225. data/vendored/puppet/lib/puppet/util/watcher.rb +17 -0
  1226. data/vendored/puppet/lib/puppet/util/watcher/change_watcher.rb +33 -0
  1227. data/vendored/puppet/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  1228. data/vendored/puppet/lib/puppet/util/watcher/timer.rb +19 -0
  1229. data/vendored/puppet/lib/puppet/util/windows.rb +35 -0
  1230. data/vendored/puppet/lib/puppet/util/windows/access_control_entry.rb +84 -0
  1231. data/vendored/puppet/lib/puppet/util/windows/access_control_list.rb +113 -0
  1232. data/vendored/puppet/lib/puppet/util/windows/adsi.rb +548 -0
  1233. data/vendored/puppet/lib/puppet/util/windows/api_types.rb +282 -0
  1234. data/vendored/puppet/lib/puppet/util/windows/com.rb +224 -0
  1235. data/vendored/puppet/lib/puppet/util/windows/error.rb +83 -0
  1236. data/vendored/puppet/lib/puppet/util/windows/eventlog.rb +192 -0
  1237. data/vendored/puppet/lib/puppet/util/windows/file.rb +488 -0
  1238. data/vendored/puppet/lib/puppet/util/windows/principal.rb +191 -0
  1239. data/vendored/puppet/lib/puppet/util/windows/process.rb +497 -0
  1240. data/vendored/puppet/lib/puppet/util/windows/registry.rb +374 -0
  1241. data/vendored/puppet/lib/puppet/util/windows/root_certs.rb +108 -0
  1242. data/vendored/puppet/lib/puppet/util/windows/security.rb +857 -0
  1243. data/vendored/puppet/lib/puppet/util/windows/security_descriptor.rb +62 -0
  1244. data/vendored/puppet/lib/puppet/util/windows/sid.rb +231 -0
  1245. data/vendored/puppet/lib/puppet/util/windows/string.rb +16 -0
  1246. data/vendored/puppet/lib/puppet/util/windows/taskscheduler.rb +1276 -0
  1247. data/vendored/puppet/lib/puppet/util/windows/user.rb +309 -0
  1248. data/vendored/puppet/lib/puppet/util/yaml.rb +36 -0
  1249. data/vendored/puppet/lib/puppet/vendor.rb +57 -0
  1250. data/vendored/puppet/lib/puppet/vendor/deep_merge/CHANGELOG +45 -0
  1251. data/vendored/puppet/lib/puppet/vendor/deep_merge/Gemfile +3 -0
  1252. data/vendored/puppet/lib/puppet/vendor/deep_merge/LICENSE +21 -0
  1253. data/vendored/puppet/lib/puppet/vendor/deep_merge/PUPPET_README.md +6 -0
  1254. data/vendored/puppet/lib/puppet/vendor/deep_merge/README.md +113 -0
  1255. data/vendored/puppet/lib/puppet/vendor/deep_merge/Rakefile +19 -0
  1256. data/vendored/puppet/lib/puppet/vendor/deep_merge/deep_merge.gemspec +35 -0
  1257. data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge.rb +2 -0
  1258. data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/core.rb +210 -0
  1259. data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/deep_merge_hash.rb +28 -0
  1260. data/vendored/puppet/lib/puppet/vendor/deep_merge/lib/deep_merge/rails_compat.rb +27 -0
  1261. data/vendored/puppet/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +608 -0
  1262. data/vendored/puppet/lib/puppet/vendor/load_deep_merge.rb +1 -0
  1263. data/vendored/puppet/lib/puppet/vendor/load_pathspec.rb +1 -0
  1264. data/vendored/puppet/lib/puppet/vendor/load_semantic.rb +1 -0
  1265. data/vendored/puppet/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  1266. data/vendored/puppet/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
  1267. data/vendored/puppet/lib/puppet/vendor/pathspec/LICENSE +201 -0
  1268. data/vendored/puppet/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
  1269. data/vendored/puppet/lib/puppet/vendor/pathspec/README.md +53 -0
  1270. data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec.rb +122 -0
  1271. data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
  1272. data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
  1273. data/vendored/puppet/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
  1274. data/vendored/puppet/lib/puppet/vendor/require_vendored.rb +6 -0
  1275. data/vendored/puppet/lib/puppet/vendor/semantic/lib/semantic.rb +5 -0
  1276. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +7 -0
  1277. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +181 -0
  1278. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +60 -0
  1279. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +117 -0
  1280. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
  1281. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +25 -0
  1282. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +31 -0
  1283. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  1284. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +203 -0
  1285. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +758 -0
  1286. data/vendored/puppet/lib/puppet/vendor/semantic_puppet/locales/config.yaml +21 -0
  1287. data/vendored/puppet/lib/puppet/version.rb +93 -0
  1288. data/vendored/puppet/lib/puppet_pal.rb +290 -0
  1289. data/vendored/puppet/lib/puppet_x.rb +14 -0
  1290. data/vendored/require_vendored.rb +11 -0
  1291. metadata +1501 -9
@@ -0,0 +1,263 @@
1
+ require 'puppet/parser/type_loader'
2
+ require 'puppet/util/file_watcher'
3
+ require 'puppet/util/warnings'
4
+
5
+ # @api private
6
+ class Puppet::Resource::TypeCollection
7
+ attr_reader :environment
8
+ attr_accessor :parse_failed
9
+
10
+ include Puppet::Util::Warnings
11
+
12
+ def clear
13
+ @hostclasses.clear
14
+ @definitions.clear
15
+ @applications.clear
16
+ @nodes.clear
17
+ @notfound.clear
18
+ @capability_mappings.clear
19
+ @sites.clear
20
+ end
21
+
22
+ def initialize(env)
23
+ @environment = env
24
+ @hostclasses = {}
25
+ @definitions = {}
26
+ @capability_mappings = {}
27
+ @applications = {}
28
+ @nodes = {}
29
+ @notfound = {}
30
+ @sites = []
31
+
32
+ # So we can keep a list and match the first-defined regex
33
+ @node_list = []
34
+ end
35
+
36
+ def import_ast(ast, modname)
37
+ ast.instantiate(modname).each do |instance|
38
+ add(instance)
39
+ end
40
+ end
41
+
42
+ def inspect
43
+ "TypeCollection" + {
44
+ :hostclasses => @hostclasses.keys,
45
+ :definitions => @definitions.keys,
46
+ :nodes => @nodes.keys,
47
+ :capability_mappings => @capability_mappings.keys,
48
+ :applications => @applications.keys,
49
+ :site => @sites[0] # todo, could be just a binary, this dumps the entire body (good while developing)
50
+ }.inspect
51
+ end
52
+
53
+ # @api private
54
+ def <<(thing)
55
+ add(thing)
56
+ self
57
+ end
58
+
59
+ def add(instance)
60
+ # return a merged instance, or the given
61
+ result = catch(:merged) {
62
+ send("add_#{instance.type}", instance)
63
+ instance.resource_type_collection = self
64
+ instance
65
+ }
66
+ end
67
+
68
+ def add_hostclass(instance)
69
+ handle_hostclass_merge(instance)
70
+ dupe_check(instance, @hostclasses) { |dupe| _("Class '%{klass}' is already defined%{error}; cannot redefine") % { klass: instance.name, error: dupe.error_context } }
71
+ dupe_check(instance, @definitions) { |dupe| _("Definition '%{klass}' is already defined%{error}; cannot be redefined as a class") % { klass: instance.name, error: dupe.error_context } }
72
+ dupe_check(instance, @applications) { |dupe| _("Application '%{klass}' is already defined%{error}; cannot be redefined as a class") % { klass: instance.name, error: dupe.error_context } }
73
+
74
+ @hostclasses[instance.name] = instance
75
+ instance
76
+ end
77
+
78
+ def handle_hostclass_merge(instance)
79
+ # Only main class (named '') can be merged (for purpose of merging top-scopes).
80
+ return instance unless instance.name == ''
81
+ if instance.type == :hostclass && (other = @hostclasses[instance.name]) && other.type == :hostclass
82
+ other.merge(instance)
83
+ # throw is used to signal merge - avoids dupe checks and adding it to hostclasses
84
+ throw :merged, other
85
+ end
86
+ end
87
+
88
+ # Replaces the known settings with a new instance (that must be named 'settings').
89
+ # This is primarily needed for testing purposes. Also see PUP-5954 as it makes
90
+ # it illegal to merge classes other than the '' (main) class. Prior to this change
91
+ # settings where always merged rather than being defined from scratch for many testing scenarios
92
+ # not having a complete side effect free setup for compilation.
93
+ #
94
+ def replace_settings(instance)
95
+ @hostclasses['settings'] = instance
96
+ end
97
+
98
+ def hostclass(name)
99
+ @hostclasses[munge_name(name)]
100
+ end
101
+
102
+ def add_node(instance)
103
+ dupe_check(instance, @nodes) { |dupe| _("Node '%{name}' is already defined%{error}; cannot redefine") % { name: instance.name, error: dupe.error_context } }
104
+
105
+ @node_list << instance
106
+ @nodes[instance.name] = instance
107
+ instance
108
+ end
109
+
110
+ def add_site(instance)
111
+ dupe_check_singleton(instance, @sites) { |dupe| _("Site is already defined%{error}; cannot redefine") % { error: dupe.error_context } }
112
+ @sites << instance
113
+ instance
114
+ end
115
+
116
+ def site(_)
117
+ @sites[0]
118
+ end
119
+
120
+ def loader
121
+ @loader ||= Puppet::Parser::TypeLoader.new(environment)
122
+ end
123
+
124
+ def node(name)
125
+ name = munge_name(name)
126
+
127
+ if node = @nodes[name]
128
+ return node
129
+ end
130
+
131
+ @node_list.each do |n|
132
+ next unless n.name_is_regex?
133
+ return n if n.match(name)
134
+ end
135
+ nil
136
+ end
137
+
138
+ def node_exists?(name)
139
+ @nodes[munge_name(name)]
140
+ end
141
+
142
+ def nodes?
143
+ @nodes.length > 0
144
+ end
145
+
146
+ def add_definition(instance)
147
+ dupe_check(instance, @hostclasses) { |dupe| _("'%{name}' is already defined%{error} as a class; cannot redefine as a definition") % { name: instance.name, error: dupe.error_context } }
148
+ dupe_check(instance, @definitions) { |dupe| _("Definition '%{name}' is already defined%{error}; cannot be redefined") % { name: instance.name, error: dupe.error_context } }
149
+ dupe_check(instance, @applications) { |dupe| _("'%{name}' is already defined%{error} as an application; cannot be redefined") % { name: instance.name, error: dupe.error_context } }
150
+ @definitions[instance.name] = instance
151
+ end
152
+
153
+ def add_capability_mapping(instance)
154
+ dupe_check(instance, @capability_mappings) { |dupe| _("'%{name}' is already defined%{error} as a class; cannot redefine as a mapping") % { name: instance.name, error: dupe.error_context } }
155
+ @capability_mappings[instance.name] = instance
156
+ end
157
+
158
+ def definition(name)
159
+ @definitions[munge_name(name)]
160
+ end
161
+
162
+ def add_application(instance)
163
+ dupe_check(instance, @hostclasses) { |dupe| _("'%{name}' is already defined%{error} as a class; cannot redefine as an application") % { name: instance.name, error: dupe.error_context } }
164
+ dupe_check(instance, @definitions) { |dupe| _("'%{name}' is already defined%{error} as a definition; cannot redefine as an application") % { name: instance.name, error: dupe.error_context } }
165
+ dupe_check(instance, @applications) { |dupe| _("'%{name}' is already defined%{error} as an application; cannot be redefined") % { name: instance.name, error: dupe.error_context } }
166
+ @applications[instance.name] = instance
167
+ end
168
+
169
+ def application(name)
170
+ @applications[munge_name(name)]
171
+ end
172
+
173
+ def find_node(name)
174
+ @nodes[munge_name(name)]
175
+ end
176
+
177
+ def find_site()
178
+ @sites[0]
179
+ end
180
+
181
+ def find_hostclass(name)
182
+ find_or_load(name, :hostclass)
183
+ end
184
+
185
+ def find_definition(name)
186
+ find_or_load(name, :definition)
187
+ end
188
+
189
+ def find_application(name)
190
+ find_or_load(name, :application)
191
+ end
192
+
193
+ # TODO: This implementation is wasteful as it creates a copy on each request
194
+ #
195
+ [:hostclasses, :nodes, :definitions, :capability_mappings,
196
+ :applications].each do |m|
197
+ define_method(m) do
198
+ instance_variable_get("@#{m}").dup
199
+ end
200
+ end
201
+
202
+ def parse_failed?
203
+ @parse_failed
204
+ end
205
+
206
+ def version
207
+ if !defined?(@version)
208
+ if environment.config_version.nil? || environment.config_version == ""
209
+ @version = Time.now.to_i
210
+ else
211
+ @version = Puppet::Util::Execution.execute([environment.config_version]).strip
212
+ end
213
+ end
214
+
215
+ @version
216
+ rescue Puppet::ExecutionFailure => e
217
+ raise Puppet::ParseError, _("Execution of config_version command `%{cmd}` failed: %{message}") % { cmd: environment.config_version, message: e.message }, e.backtrace
218
+ end
219
+
220
+ private
221
+
222
+ COLON_COLON = "::".freeze
223
+
224
+ # Resolve namespaces and find the given object. Autoload it if
225
+ # necessary.
226
+ def find_or_load(name, type)
227
+ # Name is always absolute, but may start with :: which must be removed
228
+ fqname = (name[0,2] == COLON_COLON ? name[2..-1] : name)
229
+
230
+ result = send(type, fqname)
231
+ unless result
232
+ if @notfound[ fqname ] && Puppet[ :ignoremissingtypes ]
233
+ # do not try to autoload if we already tried and it wasn't conclusive
234
+ # as this is a time consuming operation. Warn the user.
235
+ # Check first if debugging is on since the call to debug_once is expensive
236
+ if Puppet[:debug]
237
+ debug_once _("Not attempting to load %{type} %{fqname} as this object was missing during a prior compilation") % { type: type, fqname: fqname }
238
+ end
239
+ else
240
+ fqname = munge_name(fqname)
241
+ result = loader.try_load_fqname(type, fqname)
242
+ @notfound[ fqname ] = result.nil?
243
+ end
244
+ end
245
+ result
246
+ end
247
+
248
+ def munge_name(name)
249
+ name.to_s.downcase
250
+ end
251
+
252
+ def dupe_check(instance, hash)
253
+ return unless dupe = hash[instance.name]
254
+ message = yield dupe
255
+ instance.fail Puppet::ParseError, message
256
+ end
257
+
258
+ def dupe_check_singleton(instance, set)
259
+ return if set.empty?
260
+ message = yield set[0]
261
+ instance.fail Puppet::ParseError, message
262
+ end
263
+ end
@@ -0,0 +1,16 @@
1
+ module Puppet::Scheduler
2
+ require 'puppet/scheduler/job'
3
+ require 'puppet/scheduler/splay_job'
4
+ require 'puppet/scheduler/scheduler'
5
+ require 'puppet/scheduler/timer'
6
+
7
+ module_function
8
+
9
+ def create_job(interval, splay=false, splay_limit=0, &block)
10
+ if splay
11
+ Puppet::Scheduler::SplayJob.new(interval, splay_limit, &block)
12
+ else
13
+ Puppet::Scheduler::Job.new(interval, &block)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,53 @@
1
+ module Puppet::Scheduler
2
+ class Job
3
+ attr_reader :run_interval
4
+ attr_accessor :last_run
5
+ attr_accessor :start_time
6
+
7
+ def initialize(run_interval, &block)
8
+ self.run_interval = run_interval
9
+ @last_run = nil
10
+ @run_proc = block
11
+ @enabled = true
12
+ end
13
+
14
+ def run_interval=(interval)
15
+ @run_interval = [interval, 0].max
16
+ end
17
+
18
+ def ready?(time)
19
+ if @last_run
20
+ @last_run + @run_interval <= time
21
+ else
22
+ true
23
+ end
24
+ end
25
+
26
+ def enabled?
27
+ @enabled
28
+ end
29
+
30
+ def enable
31
+ @enabled = true
32
+ end
33
+
34
+ def disable
35
+ @enabled = false
36
+ end
37
+
38
+ def interval_to_next_from(time)
39
+ if ready?(time)
40
+ 0
41
+ else
42
+ @run_interval - (time - @last_run)
43
+ end
44
+ end
45
+
46
+ def run(now)
47
+ @last_run = now
48
+ if @run_proc
49
+ @run_proc.call(self)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,44 @@
1
+ module Puppet::Scheduler
2
+ class Scheduler
3
+ def initialize(timer=Puppet::Scheduler::Timer.new)
4
+ @timer = timer
5
+ end
6
+
7
+ def run_loop(jobs)
8
+ mark_start_times(jobs, @timer.now)
9
+ while not enabled(jobs).empty?
10
+ @timer.wait_for(min_interval_to_next_run_from(jobs, @timer.now))
11
+ run_ready(jobs, @timer.now)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def enabled(jobs)
18
+ jobs.select(&:enabled?)
19
+ end
20
+
21
+ def mark_start_times(jobs, start_time)
22
+ jobs.each do |job|
23
+ job.start_time = start_time
24
+ end
25
+ end
26
+
27
+ def min_interval_to_next_run_from(jobs, from_time)
28
+ enabled(jobs).map do |j|
29
+ j.interval_to_next_from(from_time)
30
+ end.min
31
+ end
32
+
33
+ def run_ready(jobs, at_time)
34
+ enabled(jobs).each do |j|
35
+ # This check intentionally happens right before each run,
36
+ # instead of filtering on ready schedulers, since one may adjust
37
+ # the readiness of a later one
38
+ if j.ready?(at_time)
39
+ j.run(at_time)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,32 @@
1
+ module Puppet::Scheduler
2
+ class SplayJob < Job
3
+ attr_reader :splay
4
+
5
+ def initialize(run_interval, splay_limit, &block)
6
+ @splay = calculate_splay(splay_limit)
7
+ super(run_interval, &block)
8
+ end
9
+
10
+ def interval_to_next_from(time)
11
+ if last_run
12
+ super
13
+ else
14
+ (start_time + splay) - time
15
+ end
16
+ end
17
+
18
+ def ready?(time)
19
+ if last_run
20
+ super
21
+ else
22
+ start_time + splay <= time
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def calculate_splay(limit)
29
+ rand(limit + 1)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ module Puppet::Scheduler
2
+ class Timer
3
+ def wait_for(seconds)
4
+ if seconds > 0
5
+ sleep(seconds)
6
+ end
7
+ end
8
+
9
+ def now
10
+ Time.now
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,1457 @@
1
+ require 'puppet'
2
+ require 'getoptlong'
3
+ require 'puppet/util/watched_file'
4
+ require 'puppet/util/command_line/puppet_option_parser'
5
+ require 'forwardable'
6
+ require 'fileutils'
7
+
8
+ # The class for handling configuration files.
9
+ class Puppet::Settings
10
+ extend Forwardable
11
+ include Enumerable
12
+
13
+ require 'puppet/settings/errors'
14
+ require 'puppet/settings/base_setting'
15
+ require 'puppet/settings/string_setting'
16
+ require 'puppet/settings/enum_setting'
17
+ require 'puppet/settings/symbolic_enum_setting'
18
+ require 'puppet/settings/array_setting'
19
+ require 'puppet/settings/file_setting'
20
+ require 'puppet/settings/directory_setting'
21
+ require 'puppet/settings/file_or_directory_setting'
22
+ require 'puppet/settings/path_setting'
23
+ require 'puppet/settings/boolean_setting'
24
+ require 'puppet/settings/terminus_setting'
25
+ require 'puppet/settings/duration_setting'
26
+ require 'puppet/settings/ttl_setting'
27
+ require 'puppet/settings/priority_setting'
28
+ require 'puppet/settings/autosign_setting'
29
+ require 'puppet/settings/config_file'
30
+ require 'puppet/settings/value_translator'
31
+ require 'puppet/settings/environment_conf'
32
+ require 'puppet/settings/server_list_setting'
33
+ require 'puppet/settings/certificate_revocation_setting'
34
+
35
+ # local reference for convenience
36
+ PuppetOptionParser = Puppet::Util::CommandLine::PuppetOptionParser
37
+
38
+ attr_accessor :files
39
+ attr_reader :timer
40
+
41
+ # These are the settings that every app is required to specify; there are
42
+ # reasonable defaults defined in application.rb.
43
+ REQUIRED_APP_SETTINGS = [:logdir, :confdir, :vardir, :codedir]
44
+
45
+ # The acceptable sections of the puppet.conf configuration file.
46
+ ALLOWED_SECTION_NAMES = ['main', 'master', 'agent', 'user'].freeze
47
+
48
+ NONE = 'none'.freeze
49
+
50
+ # This method is intended for puppet internal use only; it is a convenience method that
51
+ # returns reasonable application default settings values for a given run_mode.
52
+ def self.app_defaults_for_run_mode(run_mode)
53
+ {
54
+ :name => run_mode.to_s,
55
+ :run_mode => run_mode.name,
56
+ :confdir => run_mode.conf_dir,
57
+ :codedir => run_mode.code_dir,
58
+ :vardir => run_mode.var_dir,
59
+ :rundir => run_mode.run_dir,
60
+ :logdir => run_mode.log_dir,
61
+ }
62
+ end
63
+
64
+ def self.default_certname()
65
+ hostname = hostname_fact
66
+ domain = domain_fact
67
+ if domain and domain != ""
68
+ fqdn = [hostname, domain].join(".")
69
+ else
70
+ fqdn = hostname
71
+ end
72
+ fqdn.to_s.gsub(/\.$/, '')
73
+ end
74
+
75
+ def self.hostname_fact()
76
+ Facter.value :hostname
77
+ end
78
+
79
+ def self.domain_fact()
80
+ Facter.value :domain
81
+ end
82
+
83
+ def self.default_config_file_name
84
+ "puppet.conf"
85
+ end
86
+
87
+ # Create a new collection of config settings.
88
+ def initialize
89
+ @config = {}
90
+ @shortnames = {}
91
+
92
+ @created = []
93
+
94
+ # Keep track of set values.
95
+ @value_sets = {
96
+ :cli => Values.new(:cli, @config),
97
+ :memory => Values.new(:memory, @config),
98
+ :application_defaults => Values.new(:application_defaults, @config),
99
+ :overridden_defaults => Values.new(:overridden_defaults, @config),
100
+ }
101
+ @configuration_file = nil
102
+
103
+ # And keep a per-environment cache
104
+ @cache = Hash.new { |hash, key| hash[key] = {} }
105
+ @values = Hash.new { |hash, key| hash[key] = {} }
106
+
107
+ # The list of sections we've used.
108
+ @used = []
109
+
110
+ @hooks_to_call_on_application_initialization = []
111
+ @deprecated_setting_names = []
112
+ @deprecated_settings_that_have_been_configured = []
113
+
114
+ @translate = Puppet::Settings::ValueTranslator.new
115
+ @config_file_parser = Puppet::Settings::ConfigFile.new(@translate)
116
+ end
117
+
118
+ # Retrieve a config value
119
+ # @param param [Symbol] the name of the setting
120
+ # @return [Object] the value of the setting
121
+ # @api private
122
+ def [](param)
123
+ if @deprecated_setting_names.include?(param)
124
+ issue_deprecation_warning(setting(param), "Accessing '#{param}' as a setting is deprecated.")
125
+ end
126
+ value(param)
127
+ end
128
+
129
+ # Set a config value. This doesn't set the defaults, it sets the value itself.
130
+ # @param param [Symbol] the name of the setting
131
+ # @param value [Object] the new value of the setting
132
+ # @api private
133
+ def []=(param, value)
134
+ if @deprecated_setting_names.include?(param)
135
+ issue_deprecation_warning(setting(param), "Modifying '#{param}' as a setting is deprecated.")
136
+ end
137
+ @value_sets[:memory].set(param, value)
138
+ unsafe_flush_cache
139
+ end
140
+
141
+ # Create a new default value for the given setting. The default overrides are
142
+ # higher precedence than the defaults given in defaults.rb, but lower
143
+ # precedence than any other values for the setting. This allows one setting
144
+ # `a` to change the default of setting `b`, but still allow a user to provide
145
+ # a value for setting `b`.
146
+ #
147
+ # @param param [Symbol] the name of the setting
148
+ # @param value [Object] the new default value for the setting
149
+ # @api private
150
+ def override_default(param, value)
151
+ @value_sets[:overridden_defaults].set(param, value)
152
+ unsafe_flush_cache
153
+ end
154
+
155
+ # Generate the list of valid arguments, in a format that GetoptLong can
156
+ # understand, and add them to the passed option list.
157
+ def addargs(options)
158
+ # Add all of the settings as valid options.
159
+ self.each { |name, setting|
160
+ setting.getopt_args.each { |args| options << args }
161
+ }
162
+
163
+ options
164
+ end
165
+
166
+ # Generate the list of valid arguments, in a format that OptionParser can
167
+ # understand, and add them to the passed option list.
168
+ def optparse_addargs(options)
169
+ # Add all of the settings as valid options.
170
+ self.each { |name, setting|
171
+ options << setting.optparse_args
172
+ }
173
+
174
+ options
175
+ end
176
+
177
+ # Is our setting a boolean setting?
178
+ def boolean?(param)
179
+ param = param.to_sym
180
+ @config.include?(param) and @config[param].kind_of?(BooleanSetting)
181
+ end
182
+
183
+ # Remove all set values, potentially skipping cli values.
184
+ def clear
185
+ unsafe_clear
186
+ end
187
+
188
+ # Remove all set values, potentially skipping cli values.
189
+ def unsafe_clear(clear_cli = true, clear_application_defaults = false)
190
+ if clear_application_defaults
191
+ @value_sets[:application_defaults] = Values.new(:application_defaults, @config)
192
+ @app_defaults_initialized = false
193
+ end
194
+
195
+ if clear_cli
196
+ @value_sets[:cli] = Values.new(:cli, @config)
197
+
198
+ # Only clear the 'used' values if we were explicitly asked to clear out
199
+ # :cli values; otherwise, it may be just a config file reparse,
200
+ # and we want to retain this cli values.
201
+ @used = []
202
+ end
203
+
204
+ @value_sets[:memory] = Values.new(:memory, @config)
205
+ @value_sets[:overridden_defaults] = Values.new(:overridden_defaults, @config)
206
+
207
+ @deprecated_settings_that_have_been_configured.clear
208
+ @values.clear
209
+ @cache.clear
210
+ end
211
+ private :unsafe_clear
212
+
213
+ # Clears all cached settings for a particular environment to ensure
214
+ # that changes to environment.conf are reflected in the settings if
215
+ # the environment timeout has expired.
216
+ #
217
+ # param [String, Symbol] environment the name of environment to clear settings for
218
+ #
219
+ # @api private
220
+ def clear_environment_settings(environment)
221
+
222
+ if environment.nil?
223
+ return
224
+ end
225
+
226
+ @cache[environment.to_sym].clear
227
+ @values[environment.to_sym] = {}
228
+ end
229
+
230
+ # Clear @cache, @used and the Environment.
231
+ #
232
+ # Whenever an object is returned by Settings, a copy is stored in @cache.
233
+ # As long as Setting attributes that determine the content of returned
234
+ # objects remain unchanged, Settings can keep returning objects from @cache
235
+ # without re-fetching or re-generating them.
236
+ #
237
+ # Whenever a Settings attribute changes, such as @values or @preferred_run_mode,
238
+ # this method must be called to clear out the caches so that updated
239
+ # objects will be returned.
240
+ def flush_cache
241
+ unsafe_flush_cache
242
+ end
243
+
244
+ def unsafe_flush_cache
245
+ clearused
246
+ end
247
+ private :unsafe_flush_cache
248
+
249
+ def clearused
250
+ @cache.clear
251
+ @used = []
252
+ end
253
+
254
+ def global_defaults_initialized?()
255
+ @global_defaults_initialized
256
+ end
257
+
258
+ def initialize_global_settings(args = [])
259
+ raise Puppet::DevError, "Attempting to initialize global default settings more than once!" if global_defaults_initialized?
260
+
261
+ # The first two phases of the lifecycle of a puppet application are:
262
+ # 1) Parse the command line options and handle any of them that are
263
+ # registered, defined "global" puppet settings (mostly from defaults.rb).
264
+ # 2) Parse the puppet config file(s).
265
+
266
+ parse_global_options(args)
267
+ parse_config_files
268
+
269
+ @global_defaults_initialized = true
270
+ end
271
+
272
+ # This method is called during application bootstrapping. It is responsible for parsing all of the
273
+ # command line options and initializing the settings accordingly.
274
+ #
275
+ # It will ignore options that are not defined in the global puppet settings list, because they may
276
+ # be valid options for the specific application that we are about to launch... however, at this point
277
+ # in the bootstrapping lifecycle, we don't yet know what that application is.
278
+ def parse_global_options(args)
279
+ # Create an option parser
280
+ option_parser = PuppetOptionParser.new
281
+ option_parser.ignore_invalid_options = true
282
+
283
+ # Add all global options to it.
284
+ self.optparse_addargs([]).each do |option|
285
+ option_parser.on(*option) do |arg|
286
+ opt, val = Puppet::Settings.clean_opt(option[0], arg)
287
+ handlearg(opt, val)
288
+ end
289
+ end
290
+
291
+ option_parser.on('--run_mode',
292
+ "The effective 'run mode' of the application: master, agent, or user.",
293
+ :REQUIRED) do |arg|
294
+ Puppet.settings.preferred_run_mode = arg
295
+ end
296
+
297
+ option_parser.parse(args)
298
+
299
+ # remove run_mode options from the arguments so that later parses don't think
300
+ # it is an unknown option.
301
+ while option_index = args.index('--run_mode') do
302
+ args.delete_at option_index
303
+ args.delete_at option_index
304
+ end
305
+ args.reject! { |arg| arg.start_with? '--run_mode=' }
306
+ end
307
+ private :parse_global_options
308
+
309
+ # A utility method (public, is used by application.rb and perhaps elsewhere) that munges a command-line
310
+ # option string into the format that Puppet.settings expects. (This mostly has to deal with handling the
311
+ # "no-" prefix on flag/boolean options).
312
+ #
313
+ # @param [String] opt the command line option that we are munging
314
+ # @param [String, TrueClass, FalseClass] val the value for the setting (as determined by the OptionParser)
315
+ def self.clean_opt(opt, val)
316
+ # rewrite --[no-]option to --no-option if that's what was given
317
+ if opt =~ /\[no-\]/ and !val
318
+ opt = opt.gsub(/\[no-\]/,'no-')
319
+ end
320
+ # otherwise remove the [no-] prefix to not confuse everybody
321
+ opt = opt.gsub(/\[no-\]/, '')
322
+ [opt, val]
323
+ end
324
+
325
+
326
+ def app_defaults_initialized?
327
+ @app_defaults_initialized
328
+ end
329
+
330
+ def initialize_app_defaults(app_defaults)
331
+ REQUIRED_APP_SETTINGS.each do |key|
332
+ raise SettingsError, "missing required app default setting '#{key}'" unless app_defaults.has_key?(key)
333
+ end
334
+
335
+ app_defaults.each do |key, value|
336
+ if key == :run_mode
337
+ self.preferred_run_mode = value
338
+ else
339
+ @value_sets[:application_defaults].set(key, value)
340
+ unsafe_flush_cache
341
+ end
342
+ end
343
+ apply_metadata
344
+ call_hooks_deferred_to_application_initialization
345
+ issue_deprecations
346
+
347
+ REQUIRED_APP_SETTINGS.each do |key|
348
+ create_ancestors(Puppet[key])
349
+ end
350
+
351
+ @app_defaults_initialized = true
352
+ end
353
+
354
+ # Create ancestor directories.
355
+ #
356
+ # @param dir [String] absolute path for a required application default directory
357
+ # @api private
358
+
359
+ def create_ancestors(dir)
360
+ parent_dir = File.dirname(dir)
361
+
362
+ if !File.exist?(parent_dir)
363
+ FileUtils.mkdir_p(parent_dir)
364
+ end
365
+ end
366
+ private :create_ancestors
367
+
368
+ def call_hooks_deferred_to_application_initialization(options = {})
369
+ @hooks_to_call_on_application_initialization.each do |setting|
370
+ begin
371
+ setting.handle(self.value(setting.name))
372
+ rescue InterpolationError => err
373
+ raise InterpolationError, err.message, err.backtrace unless options[:ignore_interpolation_dependency_errors]
374
+ #swallow. We're not concerned if we can't call hooks because dependencies don't exist yet
375
+ #we'll get another chance after application defaults are initialized
376
+ end
377
+ end
378
+ end
379
+ private :call_hooks_deferred_to_application_initialization
380
+
381
+ # Return a value's description.
382
+ def description(name)
383
+ if obj = @config[name.to_sym]
384
+ obj.desc
385
+ else
386
+ nil
387
+ end
388
+ end
389
+
390
+ def_delegators :@config, :each, :each_pair, :each_key
391
+
392
+ # Iterate over each section name.
393
+ def eachsection
394
+ yielded = []
395
+ @config.each_value do |object|
396
+ section = object.section
397
+ unless yielded.include? section
398
+ yield section
399
+ yielded << section
400
+ end
401
+ end
402
+ end
403
+
404
+ # Returns a given setting by name
405
+ # @param name [Symbol] The name of the setting to fetch
406
+ # @return [Puppet::Settings::BaseSetting] The setting object
407
+ def setting(param)
408
+ param = param.to_sym
409
+ @config[param]
410
+ end
411
+
412
+ # Handle a command-line argument.
413
+ def handlearg(opt, value = nil)
414
+ @cache.clear
415
+
416
+ if value.is_a?(FalseClass)
417
+ value = "false"
418
+ elsif value.is_a?(TrueClass)
419
+ value = "true"
420
+ end
421
+
422
+ value &&= @translate[value]
423
+ str = opt.sub(/^--/,'')
424
+
425
+ bool = true
426
+ newstr = str.sub(/^no-/, '')
427
+ if newstr != str
428
+ str = newstr
429
+ bool = false
430
+ end
431
+ str = str.intern
432
+
433
+ if @config[str].is_a?(Puppet::Settings::BooleanSetting)
434
+ if value == "" or value.nil?
435
+ value = bool
436
+ end
437
+ end
438
+
439
+ if s = @config[str]
440
+ @deprecated_settings_that_have_been_configured << s if s.completely_deprecated?
441
+ end
442
+
443
+ @value_sets[:cli].set(str, value)
444
+ unsafe_flush_cache
445
+ end
446
+
447
+ def include?(name)
448
+ name = name.intern if name.is_a? String
449
+ @config.include?(name)
450
+ end
451
+
452
+ # Prints the contents of a config file with the available config settings, or it
453
+ # prints a single value of a config setting.
454
+ def print_config_options
455
+ env = value(:environment)
456
+ val = value(:configprint)
457
+ if val == "all"
458
+ hash = {}
459
+ each do |name, obj|
460
+ val = value(name,env)
461
+ val = val.inspect if val == ""
462
+ hash[name] = val
463
+ end
464
+ hash.sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, v|
465
+ puts "#{name} = #{v}"
466
+ end
467
+ else
468
+ val.split(/\s*,\s*/).sort.each do |v|
469
+ if include?(v)
470
+ #if there is only one value, just print it for back compatibility
471
+ if v == val
472
+ puts value(val,env)
473
+ break
474
+ end
475
+ puts "#{v} = #{value(v,env)}"
476
+ else
477
+ puts "invalid setting: #{v}"
478
+ return false
479
+ end
480
+ end
481
+ end
482
+ true
483
+ end
484
+
485
+ def generate_config
486
+ puts to_config
487
+ true
488
+ end
489
+
490
+ def generate_manifest
491
+ puts to_manifest
492
+ true
493
+ end
494
+
495
+ def print_configs
496
+ return print_config_options if value(:configprint) != ""
497
+ return generate_config if value(:genconfig)
498
+ generate_manifest if value(:genmanifest)
499
+ end
500
+
501
+ def print_configs?
502
+ (value(:configprint) != "" || value(:genconfig) || value(:genmanifest)) && true
503
+ end
504
+
505
+ # The currently configured run mode that is preferred for constructing the application configuration.
506
+ def preferred_run_mode
507
+ @preferred_run_mode_name || :user
508
+ end
509
+
510
+ # PRIVATE! This only exists because we need a hook to validate the run mode when it's being set, and
511
+ # it should never, ever, ever, ever be called from outside of this file.
512
+ # This method is also called when --run_mode MODE is used on the command line to set the default
513
+ #
514
+ # @param mode [String|Symbol] the name of the mode to have in effect
515
+ # @api private
516
+ def preferred_run_mode=(mode)
517
+ mode = mode.to_s.downcase.intern
518
+ raise ValidationError, "Invalid run mode '#{mode}'" unless [:master, :agent, :user].include?(mode)
519
+ @preferred_run_mode_name = mode
520
+ # Changing the run mode has far-reaching consequences. Flush any cached
521
+ # settings so they will be re-generated.
522
+ flush_cache
523
+ mode
524
+ end
525
+
526
+ def parse_config(text, file = "text")
527
+ begin
528
+ data = @config_file_parser.parse_file(file, text, ALLOWED_SECTION_NAMES)
529
+ rescue => detail
530
+ Puppet.log_exception(detail, "Could not parse #{file}: #{detail}")
531
+ return
532
+ end
533
+
534
+ # If we get here and don't have any data, we just return and don't muck with the current state of the world.
535
+ return if data.nil?
536
+
537
+ # If we get here then we have some data, so we need to clear out any
538
+ # previous settings that may have come from config files.
539
+ unsafe_clear(false, false)
540
+
541
+ # Screen settings which have been deprecated and removed from puppet.conf
542
+ # but are still valid on the command line and/or in environment.conf
543
+ screen_non_puppet_conf_settings(data)
544
+
545
+ # Make note of deprecated settings we will warn about later in initialization
546
+ record_deprecations_from_puppet_conf(data)
547
+
548
+ # And now we can repopulate with the values from our last parsing of the config files.
549
+ @configuration_file = data
550
+
551
+ # Determine our environment, if we have one.
552
+ if @config[:environment]
553
+ env = self.value(:environment).to_sym
554
+ else
555
+ env = NONE
556
+ end
557
+
558
+ # Call any hooks we should be calling.
559
+ value_sets = value_sets_for(env, preferred_run_mode)
560
+ @config.values.select(&:has_hook?).each do |setting|
561
+ value_sets.each do |source|
562
+ if source.include?(setting.name)
563
+ # We still have to use value to retrieve the value, since
564
+ # we want the fully interpolated value, not $vardir/lib or whatever.
565
+ # This results in extra work, but so few of the settings
566
+ # will have associated hooks that it ends up being less work this
567
+ # way overall.
568
+ if setting.call_hook_on_initialize?
569
+ @hooks_to_call_on_application_initialization |= [ setting ]
570
+ else
571
+ setting.handle(ChainedValues.new(
572
+ preferred_run_mode,
573
+ env,
574
+ value_sets,
575
+ @config).interpolate(setting.name))
576
+ end
577
+ break
578
+ end
579
+ end
580
+ end
581
+
582
+ call_hooks_deferred_to_application_initialization :ignore_interpolation_dependency_errors => true
583
+ apply_metadata
584
+ end
585
+
586
+ # Parse the configuration file. Just provides thread safety.
587
+ def parse_config_files
588
+ file = which_configuration_file
589
+ if Puppet::FileSystem.exist?(file)
590
+ begin
591
+ text = read_file(file)
592
+ rescue => detail
593
+ Puppet.log_exception(detail, "Could not load #{file}: #{detail}")
594
+ return
595
+ end
596
+ else
597
+ return
598
+ end
599
+
600
+ parse_config(text, file)
601
+ end
602
+ private :parse_config_files
603
+
604
+ def main_config_file
605
+ if explicit_config_file?
606
+ return self[:config]
607
+ else
608
+ return File.join(Puppet::Util::RunMode[:master].conf_dir, config_file_name)
609
+ end
610
+ end
611
+ private :main_config_file
612
+
613
+ def user_config_file
614
+ return File.join(Puppet::Util::RunMode[:user].conf_dir, config_file_name)
615
+ end
616
+ private :user_config_file
617
+
618
+ # This method is here to get around some life-cycle issues. We need to be
619
+ # able to determine the config file name before the settings / defaults are
620
+ # fully loaded. However, we also need to respect any overrides of this value
621
+ # that the user may have specified on the command line.
622
+ #
623
+ # The easiest way to do this is to attempt to read the setting, and if we
624
+ # catch an error (meaning that it hasn't been set yet), we'll fall back to
625
+ # the default value.
626
+ def config_file_name
627
+ begin
628
+ return self[:config_file_name] if self[:config_file_name]
629
+ rescue SettingsError
630
+ # This just means that the setting wasn't explicitly set on the command line, so we will ignore it and
631
+ # fall through to the default name.
632
+ end
633
+ return self.class.default_config_file_name
634
+ end
635
+ private :config_file_name
636
+
637
+ def apply_metadata
638
+ # We have to do it in the reverse of the search path,
639
+ # because multiple sections could set the same value
640
+ # and I'm too lazy to only set the metadata once.
641
+ if @configuration_file
642
+ searchpath(nil, preferred_run_mode).reverse_each do |source|
643
+ if source.type == :section && section = @configuration_file.sections[source.name]
644
+ apply_metadata_from_section(section)
645
+ end
646
+ end
647
+ end
648
+ end
649
+ private :apply_metadata
650
+
651
+ def apply_metadata_from_section(section)
652
+ section.settings.each do |setting|
653
+ if setting.has_metadata? && type = @config[setting.name]
654
+ type.set_meta(setting.meta)
655
+ end
656
+ end
657
+ end
658
+
659
+ SETTING_TYPES = {
660
+ :string => StringSetting,
661
+ :file => FileSetting,
662
+ :directory => DirectorySetting,
663
+ :file_or_directory => FileOrDirectorySetting,
664
+ :path => PathSetting,
665
+ :boolean => BooleanSetting,
666
+ :terminus => TerminusSetting,
667
+ :duration => DurationSetting,
668
+ :ttl => TTLSetting,
669
+ :array => ArraySetting,
670
+ :enum => EnumSetting,
671
+ :symbolic_enum => SymbolicEnumSetting,
672
+ :priority => PrioritySetting,
673
+ :autosign => AutosignSetting,
674
+ :server_list => ServerListSetting,
675
+ :certificate_revocation => CertificateRevocationSetting
676
+ }
677
+
678
+ # Create a new setting. The value is passed in because it's used to determine
679
+ # what kind of setting we're creating, but the value itself might be either
680
+ # a default or a value, so we can't actually assign it.
681
+ #
682
+ # See #define_settings for documentation on the legal values for the ":type" option.
683
+ def newsetting(hash)
684
+ klass = nil
685
+ hash[:section] = hash[:section].to_sym if hash[:section]
686
+
687
+ if type = hash[:type]
688
+ unless klass = SETTING_TYPES[type]
689
+ raise ArgumentError, "Invalid setting type '#{type}'"
690
+ end
691
+ hash.delete(:type)
692
+ else
693
+ # The only implicit typing we still do for settings is to fall back to "String" type if they didn't explicitly
694
+ # specify a type. Personally I'd like to get rid of this too, and make the "type" option mandatory... but
695
+ # there was a little resistance to taking things quite that far for now. --cprice 2012-03-19
696
+ klass = StringSetting
697
+ end
698
+ hash[:settings] = self
699
+ setting = klass.new(hash)
700
+
701
+ setting
702
+ end
703
+
704
+ # This has to be private, because it doesn't add the settings to @config
705
+ private :newsetting
706
+
707
+ # Iterate across all of the objects in a given section.
708
+ def persection(section)
709
+ section = section.to_sym
710
+ self.each { |name, obj|
711
+ if obj.section == section
712
+ yield obj
713
+ end
714
+ }
715
+ end
716
+
717
+ # Reparse our config file, if necessary.
718
+ def reparse_config_files
719
+ if files
720
+ if filename = any_files_changed?
721
+ Puppet.notice "Config file #{filename} changed; triggering re-parse of all config files."
722
+ parse_config_files
723
+ reuse
724
+ end
725
+ end
726
+ end
727
+
728
+ def files
729
+ return @files if @files
730
+ @files = []
731
+ [main_config_file, user_config_file].each do |path|
732
+ if Puppet::FileSystem.exist?(path)
733
+ @files << Puppet::Util::WatchedFile.new(path)
734
+ end
735
+ end
736
+ @files
737
+ end
738
+ private :files
739
+
740
+ # Checks to see if any of the config files have been modified
741
+ # @return the filename of the first file that is found to have changed, or
742
+ # nil if no files have changed
743
+ def any_files_changed?
744
+ files.each do |file|
745
+ return file.to_str if file.changed?
746
+ end
747
+ nil
748
+ end
749
+ private :any_files_changed?
750
+
751
+ def reuse
752
+ return unless defined?(@used)
753
+ new = @used
754
+ @used = []
755
+ self.use(*new)
756
+ end
757
+
758
+ class SearchPathElement < Struct.new(:name, :type); end
759
+
760
+ # The order in which to search for values, without defaults.
761
+ #
762
+ # @param environment [String,Symbol] symbolic reference to an environment name
763
+ # @param run_mode [Symbol] symbolic reference to a Puppet run mode
764
+ # @return [Array<SearchPathElement>]
765
+ # @api private
766
+ def configsearchpath(environment = nil, run_mode = preferred_run_mode)
767
+ searchpath = [
768
+ SearchPathElement.new(:memory, :values),
769
+ SearchPathElement.new(:cli, :values),
770
+ ]
771
+ searchpath << SearchPathElement.new(environment.intern, :environment) if environment
772
+ searchpath << SearchPathElement.new(run_mode, :section) if run_mode
773
+ searchpath << SearchPathElement.new(:main, :section)
774
+ end
775
+
776
+ # The order in which to search for values.
777
+ #
778
+ # @param environment [String,Symbol] symbolic reference to an environment name
779
+ # @param run_mode [Symbol] symbolic reference to a Puppet run mode
780
+ # @return [Array<SearchPathElement>]
781
+ # @api private
782
+ def searchpath(environment = nil, run_mode = preferred_run_mode)
783
+ searchpath = configsearchpath(environment, run_mode)
784
+ searchpath << SearchPathElement.new(:application_defaults, :values)
785
+ searchpath << SearchPathElement.new(:overridden_defaults, :values)
786
+ end
787
+
788
+ def service_user_available?
789
+ return @service_user_available if defined?(@service_user_available)
790
+
791
+ if self[:user]
792
+ user = Puppet::Type.type(:user).new :name => self[:user], :audit => :ensure
793
+
794
+ @service_user_available = user.exists?
795
+ else
796
+ @service_user_available = false
797
+ end
798
+ end
799
+
800
+ def service_group_available?
801
+ return @service_group_available if defined?(@service_group_available)
802
+
803
+ if self[:group]
804
+ group = Puppet::Type.type(:group).new :name => self[:group], :audit => :ensure
805
+
806
+ @service_group_available = group.exists?
807
+ else
808
+ @service_group_available = false
809
+ end
810
+ end
811
+
812
+ # Allow later inspection to determine if the setting was set on the
813
+ # command line, or through some other code path. Used for the
814
+ # `dns_alt_names` option during cert generate. --daniel 2011-10-18
815
+ def set_by_cli?(param)
816
+ param = param.to_sym
817
+ !@value_sets[:cli].lookup(param).nil?
818
+ end
819
+
820
+ # Get values from a search path entry.
821
+ # @api private
822
+ def searchpath_values(source)
823
+ case source.type
824
+ when :values
825
+ @value_sets[source.name]
826
+ when :section
827
+ if @configuration_file && section = @configuration_file.sections[source.name]
828
+ ValuesFromSection.new(source.name, section)
829
+ end
830
+ when :environment
831
+ ValuesFromEnvironmentConf.new(source.name)
832
+ else
833
+ raise(Puppet::DevError, "Unknown searchpath case: #{source.type} for the #{source} settings path element.")
834
+ end
835
+ end
836
+
837
+ # Allow later inspection to determine if the setting was set by user
838
+ # config, rather than a default setting.
839
+ def set_by_config?(param, environment = nil, run_mode = preferred_run_mode)
840
+ param = param.to_sym
841
+ configsearchpath(environment, run_mode).any? do |source|
842
+ if vals = searchpath_values(source)
843
+ vals.lookup(param)
844
+ end
845
+ end
846
+ end
847
+
848
+ # Patches the value for a param in a section.
849
+ # This method is required to support the use case of unifying --dns-alt-names and
850
+ # --dns_alt_names in the certificate face. Ideally this should be cleaned up.
851
+ # See PUP-3684 for more information.
852
+ # For regular use of setting a value, the method `[]=` should be used.
853
+ # @api private
854
+ #
855
+ def patch_value(param, value, type)
856
+ if @value_sets[type]
857
+ @value_sets[type].set(param, value)
858
+ unsafe_flush_cache
859
+ end
860
+ end
861
+
862
+ # Define a group of settings.
863
+ #
864
+ # @param [Symbol] section a symbol to use for grouping multiple settings together into a conceptual unit. This value
865
+ # (and the conceptual separation) is not used very often; the main place where it will have a potential impact
866
+ # is when code calls Settings#use method. See docs on that method for further details, but basically that method
867
+ # just attempts to do any preparation that may be necessary before code attempts to leverage the value of a particular
868
+ # setting. This has the most impact for file/directory settings, where #use will attempt to "ensure" those
869
+ # files / directories.
870
+ # @param [Hash[Hash]] defs the settings to be defined. This argument is a hash of hashes; each key should be a symbol,
871
+ # which is basically the name of the setting that you are defining. The value should be another hash that specifies
872
+ # the parameters for the particular setting. Legal values include:
873
+ # [:default] => not required; this is the value for the setting if no other value is specified (via cli, config file, etc.)
874
+ # For string settings this may include "variables", demarcated with $ or ${} which will be interpolated with values of other settings.
875
+ # The default value may also be a Proc that will be called only once to evaluate the default when the setting's value is retrieved.
876
+ # [:desc] => required; a description of the setting, used in documentation / help generation
877
+ # [:type] => not required, but highly encouraged! This specifies the data type that the setting represents. If
878
+ # you do not specify it, it will default to "string". Legal values include:
879
+ # :string - A generic string setting
880
+ # :boolean - A boolean setting; values are expected to be "true" or "false"
881
+ # :file - A (single) file path; puppet may attempt to create this file depending on how the settings are used. This type
882
+ # also supports additional options such as "mode", "owner", "group"
883
+ # :directory - A (single) directory path; puppet may attempt to create this file depending on how the settings are used. This type
884
+ # also supports additional options such as "mode", "owner", "group"
885
+ # :path - This is intended to be used for settings whose value can contain multiple directory paths, represented
886
+ # as strings separated by the system path separator (e.g. system path, module path, etc.).
887
+ # [:mode] => an (optional) octal value to be used as the permissions/mode for :file and :directory settings
888
+ # [:owner] => optional owner username/uid for :file and :directory settings
889
+ # [:group] => optional group name/gid for :file and :directory settings
890
+ #
891
+ def define_settings(section, defs)
892
+ section = section.to_sym
893
+ call = []
894
+ defs.each do |name, hash|
895
+ raise ArgumentError, "setting definition for '#{name}' is not a hash!" unless hash.is_a? Hash
896
+
897
+ name = name.to_sym
898
+ hash[:name] = name
899
+ hash[:section] = section
900
+ raise ArgumentError, "Setting #{name} is already defined" if @config.include?(name)
901
+ tryconfig = newsetting(hash)
902
+ if short = tryconfig.short
903
+ if other = @shortnames[short]
904
+ raise ArgumentError, "Setting #{other.name} is already using short name '#{short}'"
905
+ end
906
+ @shortnames[short] = tryconfig
907
+ end
908
+ @config[name] = tryconfig
909
+
910
+ # Collect the settings that need to have their hooks called immediately.
911
+ # We have to collect them so that we can be sure we're fully initialized before
912
+ # the hook is called.
913
+ if tryconfig.has_hook?
914
+ if tryconfig.call_hook_on_define?
915
+ call << tryconfig
916
+ elsif tryconfig.call_hook_on_initialize?
917
+ @hooks_to_call_on_application_initialization |= [ tryconfig ]
918
+ end
919
+ end
920
+
921
+ @deprecated_setting_names << name if tryconfig.deprecated?
922
+ end
923
+
924
+ call.each do |setting|
925
+ setting.handle(self.value(setting.name))
926
+ end
927
+ end
928
+
929
+ # Convert the settings we manage into a catalog full of resources that model those settings.
930
+ def to_catalog(*sections)
931
+ sections = nil if sections.empty?
932
+
933
+ catalog = Puppet::Resource::Catalog.new("Settings", Puppet::Node::Environment::NONE)
934
+ @config.keys.find_all { |key| @config[key].is_a?(FileSetting) }.each do |key|
935
+ file = @config[key]
936
+ next if file.value.nil?
937
+ next unless (sections.nil? or sections.include?(file.section))
938
+ next unless resource = file.to_resource
939
+ next if catalog.resource(resource.ref)
940
+
941
+ Puppet.debug {"Using settings: adding file resource '#{key}': '#{resource.inspect}'"}
942
+
943
+ catalog.add_resource(resource)
944
+ end
945
+
946
+ add_user_resources(catalog, sections)
947
+ add_environment_resources(catalog, sections)
948
+
949
+ catalog
950
+ end
951
+
952
+ # Convert our list of config settings into a configuration file.
953
+ def to_config
954
+ str = %{The configuration file for #{Puppet.run_mode.name}. Note that this file
955
+ is likely to have unused settings in it; any setting that's
956
+ valid anywhere in Puppet can be in any config file, even if it's not used.
957
+
958
+ Every section can specify three special parameters: owner, group, and mode.
959
+ These parameters affect the required permissions of any files specified after
960
+ their specification. Puppet will sometimes use these parameters to check its
961
+ own configured state, so they can be used to make Puppet a bit more self-managing.
962
+
963
+ The file format supports octothorpe-commented lines, but not partial-line comments.
964
+
965
+ Generated on #{Time.now}.
966
+
967
+ }.gsub(/^/, "# ")
968
+
969
+ # Add a section heading that matches our name.
970
+ str += "[#{preferred_run_mode}]\n"
971
+ eachsection do |section|
972
+ persection(section) do |obj|
973
+ str += obj.to_config + "\n" unless obj.name == :genconfig
974
+ end
975
+ end
976
+
977
+ return str
978
+ end
979
+
980
+ # Convert to a parseable manifest
981
+ def to_manifest
982
+ catalog = to_catalog
983
+ catalog.resource_refs.collect do |ref|
984
+ catalog.resource(ref).to_manifest
985
+ end.join("\n\n")
986
+ end
987
+
988
+ # Create the necessary objects to use a section. This is idempotent;
989
+ # you can 'use' a section as many times as you want.
990
+ def use(*sections)
991
+ sections = sections.collect { |s| s.to_sym }
992
+ sections = sections.reject { |s| @used.include?(s) }
993
+
994
+ return if sections.empty?
995
+
996
+ Puppet.debug("Applying settings catalog for sections #{sections.join(', ')}")
997
+
998
+ begin
999
+ catalog = to_catalog(*sections).to_ral
1000
+ rescue => detail
1001
+ Puppet.log_and_raise(detail, "Could not create resources for managing Puppet's files and directories in sections #{sections.inspect}: #{detail}")
1002
+ end
1003
+
1004
+ catalog.host_config = false
1005
+ catalog.apply do |transaction|
1006
+ if transaction.any_failed?
1007
+ report = transaction.report
1008
+ status_failures = report.resource_statuses.values.select { |r| r.failed? }
1009
+ status_fail_msg = status_failures.
1010
+ collect(&:events).
1011
+ flatten.
1012
+ select { |event| event.status == 'failure' }.
1013
+ collect { |event| "#{event.resource}: #{event.message}" }.join("; ")
1014
+
1015
+ raise "Got #{status_failures.length} failure(s) while initializing: #{status_fail_msg}"
1016
+ end
1017
+ end
1018
+
1019
+ sections.each { |s| @used << s }
1020
+ @used.uniq!
1021
+ end
1022
+
1023
+ def valid?(param)
1024
+ param = param.to_sym
1025
+ @config.has_key?(param)
1026
+ end
1027
+
1028
+ # Retrieve an object that can be used for looking up values of configuration
1029
+ # settings.
1030
+ #
1031
+ # @param environment [Symbol] The name of the environment in which to lookup
1032
+ # @param section [Symbol] The name of the configuration section in which to lookup
1033
+ # @return [Puppet::Settings::ChainedValues] An object to perform lookups
1034
+ # @api public
1035
+ def values(environment, section)
1036
+ @values[environment][section] ||= ChainedValues.new(
1037
+ section,
1038
+ environment,
1039
+ value_sets_for(environment, section),
1040
+ @config)
1041
+ end
1042
+
1043
+ # Find the correct value using our search path.
1044
+ #
1045
+ # @param param [String, Symbol] The value to look up
1046
+ # @param environment [String, Symbol] The environment to check for the value
1047
+ # @param bypass_interpolation [true, false] Whether to skip interpolation
1048
+ #
1049
+ # @return [Object] The looked up value
1050
+ #
1051
+ # @raise [InterpolationError]
1052
+ def value(param, environment = nil, bypass_interpolation = false)
1053
+ environment &&= environment.to_sym
1054
+ value_sym(param.to_sym, environment, bypass_interpolation)
1055
+ end
1056
+
1057
+ # Find the correct value using symbols and our search path.
1058
+ #
1059
+ # @param param [Symbol] The value to look up
1060
+ # @param environment [Symbol] The environment to check for the value
1061
+ # @param bypass_interpolation [true, false] Whether to skip interpolation
1062
+ #
1063
+ # @return [Object] The looked up value
1064
+ #
1065
+ # @raise [InterpolationError]
1066
+ def value_sym(param, environment = nil, bypass_interpolation = false)
1067
+ # Check the cache first. It needs to be a per-environment
1068
+ # cache so that we don't spread values from one env
1069
+ # to another.
1070
+ cached_env = @cache[environment || NONE]
1071
+
1072
+ # Avoid two lookups in cache_env unless val is nil. When it is, it's important
1073
+ # to check if the key is included so that further processing (that will result
1074
+ # in nil again) is avoided.
1075
+ val = cached_env[param]
1076
+ return val if !val.nil? || cached_env.include?(param)
1077
+
1078
+ # Short circuit to nil for undefined settings.
1079
+ return nil unless @config.include?(param)
1080
+
1081
+ vals = values(environment, preferred_run_mode)
1082
+ val = bypass_interpolation ? vals.lookup(param) : vals.interpolate(param)
1083
+ cached_env[param] = val
1084
+ val
1085
+ end
1086
+
1087
+ ##
1088
+ # (#15337) All of the logic to determine the configuration file to use
1089
+ # should be centralized into this method. The simplified approach is:
1090
+ #
1091
+ # 1. If there is an explicit configuration file, use that. (--confdir or
1092
+ # --config)
1093
+ # 2. If we're running as a root process, use the system puppet.conf
1094
+ # (usually /etc/puppetlabs/puppet/puppet.conf)
1095
+ # 3. Otherwise, use the user puppet.conf (usually ~/.puppetlabs/etc/puppet/puppet.conf)
1096
+ #
1097
+ # @api private
1098
+ # @todo this code duplicates {Puppet::Util::RunMode#which_dir} as described
1099
+ # in {https://projects.puppetlabs.com/issues/16637 #16637}
1100
+ def which_configuration_file
1101
+ if explicit_config_file? or Puppet.features.root? then
1102
+ return main_config_file
1103
+ else
1104
+ return user_config_file
1105
+ end
1106
+ end
1107
+
1108
+ # This method just turns a file into a new ConfigFile::Conf instance
1109
+ # @param file [String] absolute path to the configuration file
1110
+ # @return [Puppet::Settings::ConfigFile::Conf]
1111
+ # @api private
1112
+ def parse_file(file, allowed_sections = [])
1113
+ @config_file_parser.parse_file(file, read_file(file), allowed_sections)
1114
+ end
1115
+
1116
+ private
1117
+
1118
+ DEPRECATION_REFS = {
1119
+ # intentionally empty. This could be repopulated if we deprecate more settings
1120
+ # and have reference links to associate with them
1121
+ }.freeze
1122
+
1123
+ def screen_non_puppet_conf_settings(puppet_conf)
1124
+ puppet_conf.sections.values.each do |section|
1125
+ forbidden = section.settings.select { |setting| Puppet::Settings::EnvironmentConf::ENVIRONMENT_CONF_ONLY_SETTINGS.include?(setting.name) }
1126
+ raise(SettingsError, "Cannot set #{forbidden.map { |s| s.name }.join(", ")} settings in puppet.conf") if !forbidden.empty?
1127
+ end
1128
+ end
1129
+
1130
+ # Record that we want to issue a deprecation warning later in the application
1131
+ # initialization cycle when we have settings bootstrapped to the point where
1132
+ # we can read the Puppet[:disable_warnings] setting.
1133
+ #
1134
+ # We are only recording warnings applicable to settings set in puppet.conf
1135
+ # itself.
1136
+ def record_deprecations_from_puppet_conf(puppet_conf)
1137
+ puppet_conf.sections.values.each do |section|
1138
+ section.settings.each do |conf_setting|
1139
+ if setting = self.setting(conf_setting.name)
1140
+ @deprecated_settings_that_have_been_configured << setting if setting.deprecated?
1141
+ end
1142
+ end
1143
+ end
1144
+ end
1145
+
1146
+ def issue_deprecations
1147
+ @deprecated_settings_that_have_been_configured.each do |setting|
1148
+ issue_deprecation_warning(setting)
1149
+ end
1150
+ end
1151
+
1152
+ def issue_deprecation_warning(setting, msg = nil)
1153
+ name = setting.name
1154
+ ref = DEPRECATION_REFS.find { |params,reference| params.include?(name) }
1155
+ ref = ref[1] if ref
1156
+ case
1157
+ when msg
1158
+ msg << " #{ref}" if ref
1159
+ Puppet.deprecation_warning(msg)
1160
+ when setting.completely_deprecated?
1161
+ Puppet.deprecation_warning("Setting #{name} is deprecated. #{ref}", "setting-#{name}")
1162
+ when setting.allowed_on_commandline?
1163
+ Puppet.deprecation_warning("Setting #{name} is deprecated in puppet.conf. #{ref}", "puppet-conf-setting-#{name}")
1164
+ end
1165
+ end
1166
+
1167
+ def add_environment_resources(catalog, sections)
1168
+ path = self[:environmentpath]
1169
+ envdir = path.split(File::PATH_SEPARATOR).first if path
1170
+ configured_environment = self[:environment]
1171
+ if configured_environment == "production" && envdir && Puppet::FileSystem.exist?(envdir)
1172
+ configured_environment_path = File.join(envdir, configured_environment)
1173
+ if !Puppet::FileSystem.symlink?(configured_environment_path)
1174
+ catalog.add_resource(
1175
+ Puppet::Resource.new(:file,
1176
+ configured_environment_path,
1177
+ :parameters => { :ensure => 'directory' })
1178
+ )
1179
+ end
1180
+ end
1181
+ end
1182
+
1183
+ def add_user_resources(catalog, sections)
1184
+ return unless Puppet.features.root?
1185
+ return if Puppet.features.microsoft_windows?
1186
+ return unless self[:mkusers]
1187
+
1188
+ @config.each do |name, setting|
1189
+ next unless setting.respond_to?(:owner)
1190
+ next unless sections.nil? or sections.include?(setting.section)
1191
+
1192
+ if user = setting.owner and user != "root" and catalog.resource(:user, user).nil?
1193
+ resource = Puppet::Resource.new(:user, user, :parameters => {:ensure => :present})
1194
+ resource[:gid] = self[:group] if self[:group]
1195
+ catalog.add_resource resource
1196
+ end
1197
+ if group = setting.group and ! %w{root wheel}.include?(group) and catalog.resource(:group, group).nil?
1198
+ catalog.add_resource Puppet::Resource.new(:group, group, :parameters => {:ensure => :present})
1199
+ end
1200
+ end
1201
+ end
1202
+
1203
+ # Yield each search source in turn.
1204
+ def value_sets_for(environment, mode)
1205
+ searchpath(environment, mode).collect { |source| searchpath_values(source) }.compact
1206
+ end
1207
+
1208
+ # Read the file in.
1209
+ # @api private
1210
+ def read_file(file)
1211
+ return Puppet::FileSystem.read(file, :encoding => 'utf-8')
1212
+ end
1213
+
1214
+ # Private method for internal test use only; allows to do a comprehensive clear of all settings between tests.
1215
+ #
1216
+ # @return nil
1217
+ def clear_everything_for_tests()
1218
+ unsafe_clear(true, true)
1219
+ @configuration_file = nil
1220
+ @global_defaults_initialized = false
1221
+ @app_defaults_initialized = false
1222
+ end
1223
+ private :clear_everything_for_tests
1224
+
1225
+ def explicit_config_file?
1226
+ # Figure out if the user has provided an explicit configuration file. If
1227
+ # so, return the path to the file, if not return nil.
1228
+ #
1229
+ # The easiest way to determine whether an explicit one has been specified
1230
+ # is to simply attempt to evaluate the value of ":config". This will
1231
+ # obviously be successful if they've passed an explicit value for :config,
1232
+ # but it will also result in successful interpolation if they've only
1233
+ # passed an explicit value for :confdir.
1234
+ #
1235
+ # If they've specified neither, then the interpolation will fail and we'll
1236
+ # get an exception.
1237
+ #
1238
+ begin
1239
+ return true if self[:config]
1240
+ rescue InterpolationError
1241
+ # This means we failed to interpolate, which means that they didn't
1242
+ # explicitly specify either :config or :confdir... so we'll fall out to
1243
+ # the default value.
1244
+ return false
1245
+ end
1246
+ end
1247
+ private :explicit_config_file?
1248
+
1249
+ # Lookup configuration setting value through a chain of different value sources.
1250
+ #
1251
+ # @api public
1252
+ class ChainedValues
1253
+ ENVIRONMENT_SETTING = "environment".freeze
1254
+ ENVIRONMENT_INTERPOLATION_ALLOWED = ['config_version'].freeze
1255
+
1256
+ # @see Puppet::Settings.values
1257
+ # @api private
1258
+ def initialize(mode, environment, value_sets, defaults)
1259
+ @mode = mode
1260
+ @environment = environment
1261
+ @value_sets = value_sets
1262
+ @defaults = defaults
1263
+ end
1264
+
1265
+ # Lookup the uninterpolated value.
1266
+ #
1267
+ # @param name [Symbol] The configuration setting name to look up
1268
+ # @return [Object] The configuration setting value or nil if the setting is not known
1269
+ # @api public
1270
+ def lookup(name)
1271
+ set = @value_sets.find do |value_set|
1272
+ value_set.include?(name)
1273
+ end
1274
+ if set
1275
+ value = set.lookup(name)
1276
+ if !value.nil?
1277
+ return value
1278
+ end
1279
+ end
1280
+
1281
+ @defaults[name].default
1282
+ end
1283
+
1284
+ # Lookup the interpolated value. All instances of `$name` in the value will
1285
+ # be replaced by performing a lookup of `name` and substituting the text
1286
+ # for `$name` in the original value. This interpolation is only performed
1287
+ # if the looked up value is a String.
1288
+ #
1289
+ # @param name [Symbol] The configuration setting name to look up
1290
+ # @return [Object] The configuration setting value or nil if the setting is not known
1291
+ # @api public
1292
+ def interpolate(name)
1293
+ setting = @defaults[name]
1294
+
1295
+ if setting
1296
+ val = lookup(name)
1297
+ # if we interpolate code, all hell breaks loose.
1298
+ if name == :code
1299
+ val
1300
+ else
1301
+ # Convert it if necessary
1302
+ begin
1303
+ val = convert(val, name)
1304
+ rescue InterpolationError => err
1305
+ # This happens because we don't have access to the param name when the
1306
+ # exception is originally raised, but we want it in the message
1307
+ raise InterpolationError, "Error converting value for param '#{name}': #{err}", err.backtrace
1308
+ end
1309
+
1310
+ setting.munge(val)
1311
+ end
1312
+ else
1313
+ nil
1314
+ end
1315
+ end
1316
+
1317
+ private
1318
+
1319
+ def convert(value, setting_name)
1320
+ case value
1321
+ when nil
1322
+ nil
1323
+ when String
1324
+ failed_environment_interpolation = false
1325
+ interpolated_value = value.gsub(/\$(\w+)|\$\{(\w+)\}/) do |expression|
1326
+ varname = $2 || $1
1327
+ interpolated_expression =
1328
+ if varname != ENVIRONMENT_SETTING || ok_to_interpolate_environment(setting_name)
1329
+ if varname == ENVIRONMENT_SETTING && @environment
1330
+ @environment
1331
+ elsif varname == "run_mode"
1332
+ @mode
1333
+ elsif !(pval = interpolate(varname.to_sym)).nil?
1334
+ pval
1335
+ else
1336
+ raise InterpolationError, "Could not find value for #{expression}"
1337
+ end
1338
+ else
1339
+ failed_environment_interpolation = true
1340
+ expression
1341
+ end
1342
+ interpolated_expression
1343
+ end
1344
+ if failed_environment_interpolation
1345
+ Puppet.warning("You cannot interpolate $environment within '#{setting_name}' when using directory environments. Its value will remain #{interpolated_value}.")
1346
+ end
1347
+ interpolated_value
1348
+ else
1349
+ value
1350
+ end
1351
+ end
1352
+
1353
+ def ok_to_interpolate_environment(setting_name)
1354
+ ENVIRONMENT_INTERPOLATION_ALLOWED.include?(setting_name.to_s)
1355
+ end
1356
+ end
1357
+
1358
+ class Values
1359
+ extend Forwardable
1360
+
1361
+ attr_reader :name
1362
+
1363
+ def initialize(name, defaults)
1364
+ @name = name
1365
+ @values = {}
1366
+ @defaults = defaults
1367
+ end
1368
+
1369
+ def_delegator :@values, :include?
1370
+ def_delegator :@values, :[], :lookup
1371
+
1372
+ def set(name, value)
1373
+ default = @defaults[name]
1374
+
1375
+ if !default
1376
+ raise ArgumentError,
1377
+ "Attempt to assign a value to unknown setting #{name.inspect}"
1378
+ end
1379
+
1380
+ # This little exception-handling dance ensures that a hook is
1381
+ # able to check whether a value for itself has been explicitly
1382
+ # set, while still preserving the existing value if the hook
1383
+ # throws (as was existing behavior)
1384
+ old_value = @values[name]
1385
+ @values[name] = value
1386
+ begin
1387
+ if default.has_hook?
1388
+ default.handle(value)
1389
+ end
1390
+ rescue Exception => e
1391
+ @values[name] = old_value
1392
+ raise e
1393
+ end
1394
+ end
1395
+
1396
+ def inspect
1397
+ %Q{<#{self.class}:#{self.object_id} @name="#{@name}" @values="#{@values}">}
1398
+ end
1399
+ end
1400
+
1401
+ class ValuesFromSection
1402
+ attr_reader :name
1403
+
1404
+ def initialize(name, section)
1405
+ @name = name
1406
+ @section = section
1407
+ end
1408
+
1409
+ def include?(name)
1410
+ !@section.setting(name).nil?
1411
+ end
1412
+
1413
+ def lookup(name)
1414
+ setting = @section.setting(name)
1415
+ if setting
1416
+ setting.value
1417
+ end
1418
+ end
1419
+
1420
+ def inspect
1421
+ %Q{<#{self.class}:#{self.object_id} @name="#{@name}" @section="#{@section}">}
1422
+ end
1423
+ end
1424
+
1425
+ # @api private
1426
+ class ValuesFromEnvironmentConf
1427
+ def initialize(environment_name)
1428
+ @environment_name = environment_name
1429
+ end
1430
+
1431
+ def name
1432
+ @environment_name
1433
+ end
1434
+
1435
+ def include?(name)
1436
+ if Puppet::Settings::EnvironmentConf::VALID_SETTINGS.include?(name) && conf
1437
+ return true
1438
+ end
1439
+ false
1440
+ end
1441
+
1442
+ def lookup(name)
1443
+ return nil unless Puppet::Settings::EnvironmentConf::VALID_SETTINGS.include?(name)
1444
+ conf.send(name) if conf
1445
+ end
1446
+
1447
+ def conf
1448
+ @conf ||= if environments = Puppet.lookup(:environments) { nil }
1449
+ environments.get_conf(@environment_name)
1450
+ end
1451
+ end
1452
+
1453
+ def inspect
1454
+ %Q{<#{self.class}:#{self.object_id} @environment_name="#{@environment_name}" @conf="#{@conf}">}
1455
+ end
1456
+ end
1457
+ end