puppet 2.7.19 → 2.7.20.rc1

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

Potentially problematic release.


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

Files changed (324) hide show
  1. data/CONTRIBUTING.md +61 -238
  2. data/Gemfile +32 -0
  3. data/Gemfile.lock +44 -0
  4. data/LICENSE +1 -1
  5. data/README_DEVELOPER.md +300 -5
  6. data/Rakefile +41 -37
  7. data/ext/build_defaults.yaml +20 -0
  8. data/ext/debian/README.Debian +8 -0
  9. data/ext/debian/README.source +2 -0
  10. data/ext/debian/TODO.Debian +1 -0
  11. data/ext/debian/changelog.erb +1104 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +142 -0
  14. data/ext/debian/copyright +361 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/fileserver.conf +17 -0
  17. data/ext/debian/puppet-common.dirs +8 -0
  18. data/ext/debian/puppet-common.install +3 -0
  19. data/ext/debian/puppet-common.lintian-overrides +7 -0
  20. data/ext/debian/puppet-common.manpages +2 -0
  21. data/ext/debian/puppet-common.postinst +35 -0
  22. data/ext/debian/puppet-common.postrm +32 -0
  23. data/ext/debian/puppet-el.dirs +1 -0
  24. data/ext/debian/puppet-el.emacsen-install +25 -0
  25. data/ext/debian/puppet-el.emacsen-remove +11 -0
  26. data/ext/debian/puppet-el.emacsen-startup +9 -0
  27. data/ext/debian/puppet-el.install +1 -0
  28. data/ext/debian/puppet-testsuite.install +3 -0
  29. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  30. data/ext/debian/puppet.NEWS +86 -0
  31. data/ext/debian/puppet.conf +14 -0
  32. data/ext/debian/puppet.default +7 -0
  33. data/ext/debian/puppet.dirs +1 -0
  34. data/ext/debian/puppet.init +118 -0
  35. data/ext/debian/puppet.install +4 -0
  36. data/ext/debian/puppet.lintian-overrides +3 -0
  37. data/ext/debian/puppet.logrotate +11 -0
  38. data/ext/debian/puppet.manpages +36 -0
  39. data/ext/debian/puppet.postinst +20 -0
  40. data/ext/debian/puppet.postrm +20 -0
  41. data/ext/debian/puppet.preinst +20 -0
  42. data/ext/debian/puppetmaster-common.install +5 -0
  43. data/ext/debian/puppetmaster-common.manpages +5 -0
  44. data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
  45. data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
  46. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  47. data/ext/debian/puppetmaster-passenger.postinst +66 -0
  48. data/ext/debian/puppetmaster-passenger.postrm +33 -0
  49. data/ext/debian/puppetmaster.NEWS +13 -0
  50. data/ext/debian/puppetmaster.README.debian +16 -0
  51. data/ext/debian/puppetmaster.default +38 -0
  52. data/ext/debian/puppetmaster.dirs +1 -0
  53. data/ext/debian/puppetmaster.init +158 -0
  54. data/ext/debian/puppetmaster.install +1 -0
  55. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  56. data/ext/debian/puppetmaster.manpages +1 -0
  57. data/ext/debian/puppetmaster.postinst +20 -0
  58. data/ext/debian/puppetmaster.postrm +5 -0
  59. data/ext/debian/puppetmaster.preinst +22 -0
  60. data/ext/debian/rules +127 -0
  61. data/ext/debian/source/format +1 -0
  62. data/ext/debian/source/options +1 -0
  63. data/ext/debian/vim-puppet.README.Debian +13 -0
  64. data/ext/debian/vim-puppet.dirs +3 -0
  65. data/ext/debian/vim-puppet.yaml +5 -0
  66. data/ext/debian/watch +2 -0
  67. data/ext/emacs/puppet-mode.el +1 -0
  68. data/{conf → ext}/osx/PackageInfo.plist +0 -0
  69. data/{conf → ext}/osx/createpackage.sh +0 -0
  70. data/ext/osx/file_mapping.yaml +38 -0
  71. data/ext/osx/preflight.erb +37 -0
  72. data/{tasks/rake/templates → ext/osx}/prototype.plist.erb +0 -0
  73. data/ext/packaging/README-Solaris.md +117 -0
  74. data/ext/packaging/README.md +255 -0
  75. data/ext/packaging/spec/spec_helper.rb +12 -0
  76. data/ext/packaging/spec/tasks/00_utils_spec.rb +66 -0
  77. data/ext/packaging/tasks/00_utils.rake +382 -0
  78. data/ext/packaging/tasks/10_setupvars.rake +71 -0
  79. data/ext/packaging/tasks/20_setupextravars.rake +25 -0
  80. data/ext/packaging/tasks/apple.rake +201 -0
  81. data/ext/packaging/tasks/clean.rake +5 -0
  82. data/ext/packaging/tasks/deb.rake +108 -0
  83. data/ext/packaging/tasks/doc.rake +20 -0
  84. data/ext/packaging/tasks/fetch.rake +18 -0
  85. data/ext/packaging/tasks/gem.rake +68 -0
  86. data/ext/packaging/tasks/ips.rake +80 -0
  87. data/ext/packaging/tasks/mock.rake +126 -0
  88. data/ext/packaging/tasks/pe_deb.rake +9 -0
  89. data/ext/packaging/tasks/pe_remote.rake +45 -0
  90. data/ext/packaging/tasks/pe_rpm.rake +21 -0
  91. data/ext/packaging/tasks/pe_ship.rake +30 -0
  92. data/ext/packaging/tasks/pe_sign.rake +27 -0
  93. data/ext/packaging/tasks/pe_sles.rake +96 -0
  94. data/ext/packaging/tasks/release.rake +73 -0
  95. data/ext/packaging/tasks/remote_build.rake +78 -0
  96. data/ext/packaging/tasks/rpm.rake +52 -0
  97. data/ext/packaging/tasks/ship.rake +78 -0
  98. data/ext/packaging/tasks/sign.rake +82 -0
  99. data/ext/packaging/tasks/tag.rake +8 -0
  100. data/ext/packaging/tasks/tar.rake +68 -0
  101. data/ext/packaging/tasks/template.rake +13 -0
  102. data/ext/packaging/tasks/update.rake +16 -0
  103. data/ext/packaging/tasks/version.rake +21 -0
  104. data/ext/project_data.yaml +24 -0
  105. data/{conf/redhat/puppet.spec → ext/redhat/puppet.spec.erb} +18 -10
  106. data/install.rb +8 -8
  107. data/lib/puppet.rb +2 -6
  108. data/lib/puppet/agent/locker.rb +2 -0
  109. data/lib/puppet/application.rb +1 -1
  110. data/lib/puppet/application/agent.rb +1 -1
  111. data/lib/puppet/application/apply.rb +1 -1
  112. data/lib/puppet/application/cert.rb +5 -6
  113. data/lib/puppet/application/describe.rb +1 -1
  114. data/lib/puppet/application/device.rb +1 -1
  115. data/lib/puppet/application/doc.rb +1 -1
  116. data/lib/puppet/application/filebucket.rb +1 -1
  117. data/lib/puppet/application/inspect.rb +1 -1
  118. data/lib/puppet/application/kick.rb +1 -1
  119. data/lib/puppet/application/master.rb +1 -1
  120. data/lib/puppet/application/resource.rb +1 -1
  121. data/lib/puppet/defaults.rb +21 -3
  122. data/lib/puppet/external/dot.rb +1 -1
  123. data/lib/puppet/face/help/global.erb +1 -1
  124. data/lib/puppet/face/module/install.rb +1 -1
  125. data/lib/puppet/face/module/list.rb +1 -1
  126. data/lib/puppet/face/module/uninstall.rb +1 -1
  127. data/lib/puppet/face/node/clean.rb +23 -18
  128. data/lib/puppet/face/parser.rb +11 -2
  129. data/lib/puppet/file_collection.rb +16 -27
  130. data/lib/puppet/file_collection/lookup.rb +6 -16
  131. data/lib/puppet/file_serving/base.rb +4 -4
  132. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -4
  133. data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  134. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  135. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  136. data/lib/puppet/indirector/face.rb +2 -2
  137. data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  138. data/lib/puppet/indirector/node/exec.rb +13 -1
  139. data/lib/puppet/indirector/request.rb +4 -0
  140. data/lib/puppet/metatype/manager.rb +17 -10
  141. data/lib/puppet/network/authstore.rb +1 -1
  142. data/lib/puppet/network/rights.rb +1 -2
  143. data/lib/puppet/node/environment.rb +1 -0
  144. data/lib/puppet/parameter/value.rb +9 -3
  145. data/lib/puppet/parser/ast.rb +1 -4
  146. data/lib/puppet/parser/files.rb +1 -1
  147. data/lib/puppet/parser/functions.rb +68 -22
  148. data/lib/puppet/parser/functions/create_resources.rb +2 -3
  149. data/lib/puppet/parser/functions/shellquote.rb +21 -25
  150. data/lib/puppet/parser/lexer.rb +40 -6
  151. data/lib/puppet/parser/relationship.rb +3 -1
  152. data/lib/puppet/parser/resource.rb +2 -3
  153. data/lib/puppet/parser/resource/param.rb +3 -5
  154. data/lib/puppet/parser/scope.rb +7 -4
  155. data/lib/puppet/property.rb +5 -3
  156. data/lib/puppet/provider.rb +5 -5
  157. data/lib/puppet/provider/aixobject.rb +1 -1
  158. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  159. data/lib/puppet/provider/exec/windows.rb +1 -1
  160. data/lib/puppet/provider/file/windows.rb +10 -29
  161. data/lib/puppet/provider/group/groupadd.rb +2 -3
  162. data/lib/puppet/provider/group/ldap.rb +1 -1
  163. data/lib/puppet/provider/group/windows_adsi.rb +1 -1
  164. data/lib/puppet/provider/ldap.rb +5 -1
  165. data/lib/puppet/provider/nameservice.rb +3 -3
  166. data/lib/puppet/provider/nameservice/directoryservice.rb +2 -2
  167. data/lib/puppet/provider/package/gem.rb +6 -2
  168. data/lib/puppet/provider/package/portage.rb +4 -2
  169. data/lib/puppet/provider/parsedfile.rb +1 -1
  170. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
  171. data/lib/puppet/provider/service/base.rb +2 -41
  172. data/lib/puppet/provider/service/daemontools.rb +1 -1
  173. data/lib/puppet/provider/service/launchd.rb +1 -1
  174. data/lib/puppet/provider/service/redhat.rb +6 -5
  175. data/lib/puppet/provider/service/runit.rb +1 -1
  176. data/lib/puppet/provider/service/service.rb +43 -0
  177. data/lib/puppet/provider/service/windows.rb +1 -8
  178. data/lib/puppet/provider/user/user_role_add.rb +2 -1
  179. data/lib/puppet/provider/user/useradd.rb +8 -3
  180. data/lib/puppet/provider/user/windows_adsi.rb +12 -1
  181. data/lib/puppet/provider/zone/solaris.rb +1 -1
  182. data/lib/puppet/rails/inventory_node.rb +26 -13
  183. data/lib/puppet/reports.rb +1 -1
  184. data/lib/puppet/resource.rb +20 -5
  185. data/lib/puppet/resource/status.rb +1 -1
  186. data/lib/puppet/ssl/certificate_authority.rb +2 -0
  187. data/lib/puppet/ssl/host.rb +31 -6
  188. data/lib/puppet/test/test_helper.rb +3 -1
  189. data/lib/puppet/transaction/event.rb +1 -1
  190. data/lib/puppet/transaction/report.rb +2 -2
  191. data/lib/puppet/type.rb +30 -25
  192. data/lib/puppet/type/augeas.rb +1 -1
  193. data/lib/puppet/type/cron.rb +2 -2
  194. data/lib/puppet/type/exec.rb +6 -6
  195. data/lib/puppet/type/file.rb +5 -15
  196. data/lib/puppet/type/file/content.rb +1 -1
  197. data/lib/puppet/type/file/ensure.rb +1 -1
  198. data/lib/puppet/type/file/mode.rb +1 -1
  199. data/lib/puppet/type/file/selcontext.rb +6 -2
  200. data/lib/puppet/type/file/source.rb +1 -1
  201. data/lib/puppet/type/mount.rb +1 -1
  202. data/lib/puppet/type/package.rb +1 -1
  203. data/lib/puppet/type/schedule.rb +1 -1
  204. data/lib/puppet/type/scheduled_task.rb +1 -1
  205. data/lib/puppet/type/tidy.rb +1 -1
  206. data/lib/puppet/type/whit.rb +16 -9
  207. data/lib/puppet/util.rb +27 -11
  208. data/lib/puppet/util/adsi.rb +25 -23
  209. data/lib/puppet/util/autoload.rb +1 -1
  210. data/lib/puppet/util/classgen.rb +1 -1
  211. data/lib/puppet/util/feature.rb +3 -1
  212. data/lib/puppet/util/fileparsing.rb +9 -9
  213. data/lib/puppet/util/filetype.rb +55 -40
  214. data/lib/puppet/util/instance_loader.rb +5 -5
  215. data/lib/puppet/util/instrumentation.rb +3 -5
  216. data/lib/puppet/util/log_paths.rb +1 -3
  217. data/lib/puppet/util/monkey_patches.rb +34 -8
  218. data/lib/puppet/util/platform.rb +7 -0
  219. data/lib/puppet/util/posix.rb +3 -3
  220. data/lib/puppet/util/provider_features.rb +2 -3
  221. data/lib/puppet/util/rdoc.rb +4 -3
  222. data/lib/puppet/util/reference.rb +1 -1
  223. data/lib/puppet/util/selinux.rb +31 -36
  224. data/lib/puppet/util/tagging.rb +28 -6
  225. data/lib/puppet/util/windows.rb +1 -0
  226. data/lib/puppet/util/windows/error.rb +1 -1
  227. data/lib/puppet/util/windows/process.rb +3 -3
  228. data/lib/puppet/util/windows/security.rb +9 -46
  229. data/lib/puppet/util/windows/sid.rb +96 -0
  230. data/lib/puppet/util/windows/user.rb +65 -2
  231. data/lib/puppet/util/zaml.rb +109 -59
  232. data/lib/puppet/version.rb +18 -0
  233. data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
  234. data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
  235. data/spec/integration/defaults_spec.rb +26 -7
  236. data/spec/integration/parser/functions_spec.rb +0 -4
  237. data/spec/integration/util/file_locking_spec.rb +1 -1
  238. data/spec/integration/util/windows/security_spec.rb +3 -23
  239. data/spec/lib/puppet_spec/files.rb +3 -3
  240. data/spec/shared_contexts/platform.rb +8 -0
  241. data/spec/spec_helper.rb +6 -1
  242. data/spec/unit/application/queue_spec.rb +2 -1
  243. data/spec/unit/configurer_spec.rb +1 -1
  244. data/spec/unit/face/{instrumentation_data.rb → instrumentation_data_spec.rb} +0 -0
  245. data/spec/unit/face/{instrumentation_listener.rb → instrumentation_listener_spec.rb} +0 -0
  246. data/spec/unit/face/{instrumentation_probe.rb → instrumentation_probe_spec.rb} +0 -0
  247. data/spec/unit/indirector/catalog/static_compiler_spec.rb +194 -0
  248. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
  249. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
  250. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
  251. data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
  252. data/spec/unit/indirector/request_spec.rb +22 -0
  253. data/spec/unit/network/http/webrick_spec.rb +0 -7
  254. data/spec/unit/node/environment_spec.rb +8 -8
  255. data/spec/unit/parser/ast_spec.rb +0 -5
  256. data/spec/unit/parser/collector_spec.rb +1 -0
  257. data/spec/unit/parser/files_spec.rb +2 -2
  258. data/spec/unit/parser/functions/create_resources_spec.rb +3 -4
  259. data/spec/unit/parser/functions/require_spec.rb +0 -6
  260. data/spec/unit/parser/functions/shellquote_spec.rb +0 -5
  261. data/spec/unit/parser/functions/template_spec.rb +6 -1
  262. data/spec/unit/parser/functions_spec.rb +73 -23
  263. data/spec/unit/parser/lexer_spec.rb +133 -8
  264. data/spec/unit/parser/relationship_spec.rb +24 -0
  265. data/spec/unit/parser/resource_spec.rb +0 -4
  266. data/spec/unit/parser/scope_spec.rb +2 -2
  267. data/spec/unit/property_spec.rb +21 -1
  268. data/spec/unit/provider/exec/posix_spec.rb +7 -6
  269. data/spec/unit/provider/file/windows_spec.rb +29 -29
  270. data/spec/unit/provider/group/groupadd_spec.rb +36 -30
  271. data/spec/unit/provider/group/windows_adsi_spec.rb +2 -2
  272. data/spec/unit/provider/package/gem_spec.rb +12 -0
  273. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +14 -11
  274. data/spec/unit/provider/service/redhat_spec.rb +11 -1
  275. data/spec/unit/provider/service/windows_spec.rb +19 -0
  276. data/spec/unit/provider/user/ldap_spec.rb +22 -8
  277. data/spec/unit/provider/user/user_role_add_spec.rb +12 -0
  278. data/spec/unit/provider/user/useradd_spec.rb +146 -118
  279. data/spec/unit/provider/user/windows_adsi_spec.rb +24 -2
  280. data/spec/unit/puppet_spec.rb +10 -0
  281. data/spec/unit/resource/status_spec.rb +1 -1
  282. data/spec/unit/resource_spec.rb +73 -0
  283. data/spec/unit/ssl/certificate_authority_spec.rb +25 -1
  284. data/spec/unit/ssl/host_spec.rb +73 -27
  285. data/spec/unit/ssl/key_spec.rb +0 -4
  286. data/spec/unit/transaction/event_spec.rb +1 -1
  287. data/spec/unit/type/exec_spec.rb +1 -1
  288. data/spec/unit/type/file/content_spec.rb +6 -4
  289. data/spec/unit/type/file/{ctime.rb → ctime_spec.rb} +0 -0
  290. data/spec/unit/type/file/{mtime.rb → mtime_spec.rb} +0 -0
  291. data/spec/unit/type/file/{type.rb → type_spec.rb} +0 -0
  292. data/spec/unit/type/file_spec.rb +2 -12
  293. data/spec/unit/type/host_spec.rb +14 -5
  294. data/spec/unit/type/mount_spec.rb +8 -0
  295. data/spec/unit/type/scheduled_task_spec.rb +2 -2
  296. data/spec/unit/util/adsi_spec.rb +23 -8
  297. data/spec/unit/util/command_line_spec.rb +11 -2
  298. data/spec/unit/util/feature_spec.rb +12 -1
  299. data/spec/unit/util/filetype_spec.rb +161 -55
  300. data/spec/unit/util/log_spec.rb +1 -1
  301. data/spec/unit/util/monkey_patches_spec.rb +7 -0
  302. data/spec/unit/util/rdoc_spec.rb +8 -2
  303. data/spec/unit/util/selinux_spec.rb +24 -32
  304. data/spec/unit/util/windows/sid_spec.rb +100 -0
  305. data/spec/unit/util/zaml_spec.rb +165 -25
  306. data/spec/unit/util_spec.rb +3 -9
  307. data/spec/watchr.rb +2 -6
  308. data/tasks/rake/gem.rake +4 -2
  309. data/tasks/rake/sign.rake +1 -1
  310. data/test/language/parser.rb +1 -0
  311. data/test/language/scope.rb +0 -5
  312. data/test/language/snippets.rb +1 -2
  313. data/test/lib/puppettest.rb +16 -27
  314. data/test/lib/puppettest/parsertesting.rb +0 -1
  315. data/test/network/authstore.rb +2 -4
  316. data/test/puppet/defaults.rb +0 -4
  317. data/test/util/fileparsing.rb +2 -6
  318. metadata +1706 -1617
  319. data/conf/osx/preflight +0 -24
  320. data/spec/spec.opts +0 -4
  321. data/spec/unit/file_collection/lookup_spec.rb +0 -45
  322. data/spec/unit/file_collection_spec.rb +0 -52
  323. data/tasks/rake/apple.rake +0 -176
  324. data/test/puppet/errortest.rb +0 -19
@@ -8,7 +8,7 @@ Puppet::Face.define(:module, '1.0.0') do
8
8
 
9
9
  returns "Hash of module objects representing uninstalled modules and related errors."
10
10
 
11
- examples <<-EOT
11
+ examples <<-'EOT'
12
12
  Uninstall a module:
13
13
 
14
14
  $ puppet module uninstall puppetlabs-ssh
@@ -1,27 +1,32 @@
1
1
  Puppet::Face.define(:node, '0.0.1') do
2
2
  action(:clean) do
3
3
  option "--[no-]unexport" do
4
- summary "Unexport exported resources"
4
+ summary "Whether to remove this node's exported resources from other nodes"
5
5
  end
6
6
 
7
- summary "Clean up everything a puppetmaster knows about a node"
7
+ summary "Clean up everything a puppetmaster knows about a node."
8
8
  arguments "<host1> [<host2> ...]"
9
- description <<-EOT
10
- This includes
11
-
12
- * Signed certificates ($vardir/ssl/ca/signed/node.domain.pem)
13
- * Cached facts ($vardir/yaml/facts/node.domain.yaml)
14
- * Cached node stuff ($vardir/yaml/node/node.domain.yaml)
15
- * Reports ($vardir/reports/node.domain)
16
- * Stored configs: it can either remove all data from an host in your
17
- storedconfig database, or with --unexport turn every exported resource
18
- supporting ensure to absent so that any other host checking out their
19
- config can remove those exported configurations.
20
-
21
- This will unexport exported resources of a
22
- host, so that consumers of these resources can remove the exported
23
- resources and we will safely remove the node from our
24
- infrastructure.
9
+ description <<-'EOT'
10
+ Clean up everything a puppet master knows about a node, including certificates
11
+ and storeconfigs data.
12
+
13
+ The full list of info cleaned by this action is:
14
+
15
+ <Signed certificates> - ($vardir/ssl/ca/signed/node.domain.pem)
16
+
17
+ <Cached facts> - ($vardir/yaml/facts/node.domain.yaml)
18
+
19
+ <Cached node objects> - ($vardir/yaml/node/node.domain.yaml)
20
+
21
+ <Reports> - ($vardir/reports/node.domain)
22
+
23
+ <Stored configs> - (in database) The clean action can either remove all
24
+ data from a host in your storeconfigs database, or, with the
25
+ <--unexport> option, turn every exported resource supporting ensure to
26
+ absent so that any other host that collected those resources can remove
27
+ them. Without unexporting, a removed node's exported resources become
28
+ unmanaged by Puppet, and may linger as cruft unless you are purging
29
+ that resource type.
25
30
  EOT
26
31
 
27
32
  when_invoked do |*args|
@@ -24,13 +24,22 @@ Puppet::Face.define(:parser, '0.0.1') do
24
24
  Validate two arbitrary manifest files:
25
25
 
26
26
  $ puppet parser validate init.pp vhost.pp
27
+
28
+ Validate from STDIN:
29
+
30
+ $ cat init.pp | puppet parser validate
27
31
  EOT
28
32
  when_invoked do |*args|
29
33
  args.pop
30
34
  files = args
31
35
  if files.empty?
32
- files << Puppet[:manifest]
33
- Puppet.notice "No manifest specified. Validating the default manifest #{Puppet[:manifest]}"
36
+ if not STDIN.tty?
37
+ Puppet[:code] = STDIN.read
38
+ Puppet::Node::Environment.new(Puppet[:environment]).known_resource_types.clear
39
+ else
40
+ files << Puppet[:manifest]
41
+ Puppet.notice "No manifest specified. Validating the default manifest #{Puppet[:manifest]}"
42
+ end
34
43
  end
35
44
  files.each do |file|
36
45
  Puppet[:manifest] = file
@@ -1,30 +1,19 @@
1
- # A simple way to turn file names into singletons,
2
- # so we don't have tons of copies of each file path around.
1
+ # This was a simple way to turn file names into singletons,
2
+ #
3
+ # The theory was, like:
4
+ # 1. Turn filenames into singletons.
5
+ # 2. ????
6
+ # 3. Huge memory savings!
7
+ #
8
+ # In practice it used several MB more memory overall, and it cost more CPU
9
+ # time, and it added complexity to the code. Which was awesome.
10
+ #
11
+ # So, I gutted it. It doesn't do anything any more, but we retain the
12
+ # external form that people included so that they don't explode so much.
13
+ #
14
+ # This should be removed from the system after a graceful deprecation period,
15
+ # probably about the time that a version of Puppet containing this change is
16
+ # the last supported version. --daniel 2012-07-17
3
17
  class Puppet::FileCollection
4
18
  require 'puppet/file_collection/lookup'
5
-
6
- def self.collection
7
- @collection
8
- end
9
-
10
- def initialize
11
- @paths = []
12
- @inverse = {}
13
- end
14
-
15
- def index(path)
16
- if i = @inverse[path]
17
- return i
18
- else
19
- @paths << path
20
- i = @inverse[path] = @paths.length - 1
21
- return i
22
- end
23
- end
24
-
25
- def path(index)
26
- @paths[index]
27
- end
28
-
29
- @collection = self.new
30
19
  end
@@ -1,20 +1,10 @@
1
1
  require 'puppet/file_collection'
2
2
 
3
- # A simple module for looking up file paths and indexes
4
- # in a file collection.
5
3
  module Puppet::FileCollection::Lookup
6
- attr_accessor :line, :file_index
7
-
8
- def file_collection
9
- Puppet::FileCollection.collection
10
- end
11
-
12
- def file=(path)
13
- @file_index = file_collection.index(path)
14
- end
15
-
16
- def file
17
- return nil unless file_index
18
- file_collection.path(file_index)
19
- end
4
+ # Yeah, this is all the external interface that was added to the folks who
5
+ # included this really was. Thankfully.
6
+ #
7
+ # See the comments in `puppet/file_collection.rb` for the annotated version,
8
+ # or just port your code away from this by adding the accessors on your own.
9
+ attr_accessor :line, :file
20
10
  end
@@ -19,10 +19,10 @@ class Puppet::FileServing::Base
19
19
  # Return the full path to our file. Fails if there's no path set.
20
20
  def full_path(dummy_argument=:work_arround_for_ruby_GC_bug)
21
21
  (if relative_path.nil? or relative_path == "" or relative_path == "."
22
- path
23
- else
24
- File.join(path, relative_path)
25
- end).gsub(%r{/+}, "/")
22
+ path
23
+ else
24
+ File.join(path, relative_path)
25
+ end).gsub(%r{//+}, "/")
26
26
  end
27
27
 
28
28
  def initialize(path, options = {})
@@ -113,9 +113,7 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
113
113
 
114
114
  def remove_existing_resources(children, catalog)
115
115
  existing_names = catalog.resources.collect { |r| r.to_s }
116
-
117
116
  both = (existing_names & children.keys).inject({}) { |hash, name| hash[name] = true; hash }
118
-
119
117
  both.each { |name| children.delete(name) }
120
118
  end
121
119
 
@@ -130,8 +128,9 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
130
128
  Puppet.info "Content for '#{resource[:source]}' already exists"
131
129
  else
132
130
  Puppet.info "Storing content for source '#{resource[:source]}'"
133
- content = Puppet::FileServing::Content.find(resource[:source])
134
- Puppet::FileBucket::File.new(content.content).save
131
+ content = Puppet::FileServing::Content.indirection.find(resource[:source])
132
+ file = Puppet::FileBucket::File.new(content.content)
133
+ Puppet::FileBucket::File.indirection.save(file)
135
134
  end
136
135
  end
137
136
  end
@@ -0,0 +1,22 @@
1
+ require 'puppet/indirector/code'
2
+ require 'puppet/ssl/certificate'
3
+
4
+ class Puppet::SSL::Certificate::DisabledCa < Puppet::Indirector::Code
5
+ desc "Manage SSL certificates on disk, but reject any remote access
6
+ to the SSL data store. Used when a master has an explicitly disabled
7
+ CA to prevent clients getting confusing 'success' behaviour."
8
+
9
+ def initialize
10
+ @file = Puppet::SSL::Certificate.indirection.terminus(:file)
11
+ end
12
+
13
+ [:find, :head, :search, :save, :destroy].each do |name|
14
+ define_method(name) do |request|
15
+ if request.remote?
16
+ raise Puppet::Error, "this master is not a CA"
17
+ else
18
+ @file.send(name, request)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'puppet/indirector/code'
2
+ require 'puppet/ssl/certificate_request'
3
+
4
+ class Puppet::SSL::CertificateRequest::DisabledCa < Puppet::Indirector::Code
5
+ desc "Manage SSL certificate requests on disk, but reject any remote access
6
+ to the SSL data store. Used when a master has an explicitly disabled CA to
7
+ prevent clients getting confusing 'success' behaviour."
8
+
9
+ def initialize
10
+ @file = Puppet::SSL::CertificateRequest.indirection.terminus(:file)
11
+ end
12
+
13
+ [:find, :head, :search, :save, :destroy].each do |name|
14
+ define_method(name) do |request|
15
+ if request.remote?
16
+ raise Puppet::Error, "this master is not a CA"
17
+ else
18
+ @file.send(name, request)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'puppet/indirector/code'
2
+ require 'puppet/ssl/certificate_revocation_list'
3
+
4
+ class Puppet::SSL::CertificateRevocationList::DisabledCa < Puppet::Indirector::Code
5
+ desc "Manage SSL certificate revocation lists, but reject any remote access
6
+ to the SSL data store. Used when a master has an explicitly disabled CA to
7
+ prevent clients getting confusing 'success' behaviour."
8
+
9
+ def initialize
10
+ @file = Puppet::SSL::CertificateRevocationList.indirection.terminus(:file)
11
+ end
12
+
13
+ [:find, :head, :search, :save, :destroy].each do |name|
14
+ define_method(name) do |request|
15
+ if request.remote?
16
+ raise Puppet::Error, "this master is not a CA"
17
+ else
18
+ @file.send(name, request)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -50,11 +50,11 @@ class Puppet::Indirector::Face < Puppet::Face
50
50
 
51
51
  option "--extra HASH" do
52
52
  summary "Extra arguments to pass to the indirection request"
53
- description <<-end
53
+ description <<-EOT
54
54
  A terminus can take additional arguments to refine the operation, which
55
55
  are passed as an arbitrary hash to the back-end. Anything passed as
56
56
  the extra value is just send direct to the back-end.
57
- end
57
+ EOT
58
58
  default_to do Hash.new end
59
59
  end
60
60
 
@@ -0,0 +1,22 @@
1
+ require 'puppet/indirector/code'
2
+ require 'puppet/ssl/key'
3
+
4
+ class Puppet::SSL::Key::DisabledCa < Puppet::Indirector::Code
5
+ desc "Manage the CA private key, but reject any remote access
6
+ to the SSL data store. Used when a master has an explicitly disabled CA to
7
+ prevent clients getting confusing 'success' behaviour."
8
+
9
+ def initialize
10
+ @file = Puppet::SSL::Key.indirection.terminus(:file)
11
+ end
12
+
13
+ [:find, :head, :search, :save, :destroy].each do |name|
14
+ define_method(name) do |request|
15
+ if request.remote?
16
+ raise Puppet::Error, "this master is not a CA"
17
+ else
18
+ @file.send(name, request)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -41,7 +41,19 @@ class Puppet::Node::Exec < Puppet::Indirector::Exec
41
41
 
42
42
  # Translate the yaml string into Ruby objects.
43
43
  def translate(name, output)
44
- YAML.load(output).inject({}) { |hash, data| hash[symbolize(data[0])] = data[1]; hash }
44
+ YAML.load(output).inject({}) do |hash, data|
45
+ case data[0]
46
+ when String
47
+ hash[data[0].intern] = data[1]
48
+ when Symbol
49
+ hash[data[0]] = data[1]
50
+ else
51
+ raise Puppet::Error, "key is a #{data[0].class}, not a string or symbol"
52
+ end
53
+
54
+ hash
55
+ end
56
+
45
57
  rescue => detail
46
58
  raise Puppet::Error, "Could not load external node results for #{name}: #{detail}"
47
59
  end
@@ -150,6 +150,10 @@ class Puppet::Indirector::Request
150
150
  return(uri ? uri : "/#{indirection_name}/#{key}")
151
151
  end
152
152
 
153
+ def remote?
154
+ self.node or self.ip
155
+ end
156
+
153
157
  private
154
158
 
155
159
  def set_attributes(options)
@@ -38,8 +38,8 @@ module Manager
38
38
  end
39
39
 
40
40
  # First make sure we don't have a method sitting around
41
- name = symbolize(name)
42
- newmethod = "new#{name.to_s}"
41
+ name = name.intern
42
+ newmethod = "new#{name}"
43
43
 
44
44
  # Used for method manipulation.
45
45
  selfobj = singleton_class
@@ -108,17 +108,24 @@ module Manager
108
108
  def type(name)
109
109
  @types ||= {}
110
110
 
111
- name = name.to_s.downcase.to_sym
111
+ # We are overwhelmingly symbols here, which usually match, so it is worth
112
+ # having this special-case to return quickly. Like, 25K to 300 symbols to
113
+ # strings in this method. --daniel 2012-07-17
114
+ return @types[name] if @types[name]
112
115
 
113
- if t = @types[name]
114
- return t
115
- else
116
- if typeloader.load(name)
117
- Puppet.warning "Loaded puppet/type/#{name} but no class was created" unless @types.include? name
118
- end
116
+ # Try mangling the name, if it is a string.
117
+ if name.is_a? String
118
+ name = name.downcase.intern
119
+ return @types[name] if @types[name]
120
+ end
119
121
 
120
- return @types[name]
122
+ # Try loading the type.
123
+ if typeloader.load(name, Puppet::Node::Environment.current)
124
+ Puppet.warning "Loaded puppet/type/#{name} but no class was created" unless @types.include? name
121
125
  end
126
+
127
+ # ...and I guess that is that, eh.
128
+ return @types[name]
122
129
  end
123
130
 
124
131
  # Create a loader for Puppet types.
@@ -179,7 +179,7 @@ module Puppet
179
179
 
180
180
  # Set the declaration type. Either :allow or :deny.
181
181
  def type=(type)
182
- type = symbolize(type)
182
+ type = type.intern
183
183
  raise ArgumentError, "Invalid declaration type #{type}" unless [:allow, :deny].include?(type)
184
184
  @type = type
185
185
  end
@@ -131,10 +131,9 @@ class Rights
131
131
 
132
132
  # A right.
133
133
  class Right < Puppet::Network::AuthStore
134
- include Puppet::FileCollection::Lookup
135
-
136
134
  attr_accessor :name, :key, :acl_type
137
135
  attr_accessor :methods, :environment, :authentication
136
+ attr_accessor :line, :file
138
137
 
139
138
  ALL = [:save, :destroy, :find, :search]
140
139
 
@@ -57,6 +57,7 @@ class Puppet::Node::Environment
57
57
 
58
58
  def self.clear
59
59
  @seen.clear
60
+ Thread.current[:environment] = nil
60
61
  end
61
62
 
62
63
  attr_reader :name
@@ -53,11 +53,17 @@ class Puppet::Parameter::Value
53
53
  # A standard way of converting all of our values, so we're always
54
54
  # comparing apples to apples.
55
55
  def convert(value)
56
- if value == ''
57
- # We can't intern an empty string, yay.
56
+ case value
57
+ when Symbol, '' # can't intern an empty string
58
58
  value
59
+ when String
60
+ value.intern
61
+ when true
62
+ :true
63
+ when false
64
+ :false
59
65
  else
60
- value.to_s.to_sym
66
+ value.to_s.intern
61
67
  end
62
68
  end
63
69
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'puppet'
4
4
  require 'puppet/util/autoload'
5
- require 'puppet/file_collection/lookup'
6
5
 
7
6
  # The base class for all of the objects that make up the parse trees.
8
7
  # Handles things like file name, line #, and also does the initialization
@@ -11,13 +10,11 @@ class Puppet::Parser::AST
11
10
  # Do this so I don't have to type the full path in all of the subclasses
12
11
  AST = Puppet::Parser::AST
13
12
 
14
- include Puppet::FileCollection::Lookup
15
-
16
13
  include Puppet::Util::Errors
17
14
  include Puppet::Util::MethodHelper
18
15
  include Puppet::Util::Docs
19
16
 
20
- attr_accessor :parent, :scope
17
+ attr_accessor :parent, :scope, :file, :line
21
18
 
22
19
  def inspect
23
20
  "( #{self.class} #{self.to_s} #{@children.inspect} )"