puppet 0.22.4 → 0.23.0

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 (266) hide show
  1. data/CHANGELOG +156 -0
  2. data/README +2 -2
  3. data/Rakefile +6 -6
  4. data/bin/filebucket +212 -0
  5. data/bin/puppet +2 -0
  6. data/bin/puppetca +2 -4
  7. data/bin/puppetd +16 -15
  8. data/bin/puppetdoc +46 -496
  9. data/bin/puppetmasterd +3 -5
  10. data/bin/puppetrun +8 -3
  11. data/bin/ralsh +271 -0
  12. data/conf/redhat/client.init +1 -1
  13. data/conf/redhat/puppet.spec +13 -2
  14. data/conf/solaris/pkginfo +1 -1
  15. data/ext/puppet-test +374 -0
  16. data/install.rb +40 -31
  17. data/lib/puppet.rb +39 -4
  18. data/lib/puppet/config_stores/rest.rb +60 -0
  19. data/lib/puppet/configuration.rb +312 -17
  20. data/lib/puppet/external/event-loop/event-loop.rb +4 -0
  21. data/lib/puppet/external/gratr/rdot.rb +1 -1
  22. data/lib/puppet/fact_stores/yaml.rb +42 -0
  23. data/lib/puppet/feature/base.rb +4 -1
  24. data/lib/puppet/metatype/attributes.rb +20 -43
  25. data/lib/puppet/metatype/container.rb +1 -36
  26. data/lib/puppet/metatype/evaluation.rb +48 -19
  27. data/lib/puppet/metatype/instances.rb +35 -1
  28. data/lib/puppet/metatype/metaparams.rb +23 -19
  29. data/lib/puppet/metatype/providers.rb +25 -38
  30. data/lib/puppet/network/client/ca.rb +8 -5
  31. data/lib/puppet/network/client/master.rb +59 -17
  32. data/lib/puppet/network/handler.rb +18 -1
  33. data/lib/puppet/network/handler/ca.rb +9 -3
  34. data/lib/puppet/network/handler/facts.rb +70 -0
  35. data/lib/puppet/network/handler/filebucket.rb +4 -1
  36. data/lib/puppet/network/handler/fileserver.rb +65 -21
  37. data/lib/puppet/network/handler/master.rb +6 -3
  38. data/lib/puppet/network/handler/report.rb +12 -26
  39. data/lib/puppet/network/handler/resource.rb +14 -2
  40. data/lib/puppet/network/handler/runner.rb +5 -1
  41. data/lib/puppet/network/handler/status.rb +5 -1
  42. data/lib/puppet/network/server/mongrel.rb +4 -4
  43. data/lib/puppet/network/server/webrick.rb +14 -3
  44. data/lib/puppet/parameter.rb +30 -25
  45. data/lib/puppet/parser/ast.rb +1 -6
  46. data/lib/puppet/parser/ast/component.rb +23 -20
  47. data/lib/puppet/parser/ast/hostclass.rb +7 -11
  48. data/lib/puppet/parser/ast/leaf.rb +4 -1
  49. data/lib/puppet/parser/ast/node.rb +6 -8
  50. data/lib/puppet/parser/functions.rb +7 -4
  51. data/lib/puppet/parser/interpreter.rb +155 -205
  52. data/lib/puppet/parser/lexer.rb +35 -2
  53. data/lib/puppet/parser/parser.rb +705 -612
  54. data/lib/puppet/parser/resource.rb +91 -48
  55. data/lib/puppet/parser/resource/param.rb +52 -29
  56. data/lib/puppet/parser/scope.rb +28 -23
  57. data/lib/puppet/pgraph.rb +26 -21
  58. data/lib/puppet/propertychange.rb +12 -12
  59. data/lib/puppet/provider.rb +102 -31
  60. data/lib/puppet/provider/cron/crontab.rb +7 -8
  61. data/lib/puppet/provider/group/groupadd.rb +4 -4
  62. data/lib/puppet/provider/group/pw.rb +3 -3
  63. data/lib/puppet/provider/mount.rb +8 -8
  64. data/lib/puppet/provider/mount/netinfo.rb +5 -5
  65. data/lib/puppet/provider/mount/parsed.rb +2 -2
  66. data/lib/puppet/provider/nameservice.rb +19 -31
  67. data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
  68. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  69. data/lib/puppet/provider/nameservice/pw.rb +4 -4
  70. data/lib/puppet/provider/package.rb +31 -0
  71. data/lib/puppet/provider/package/appdmg.rb +118 -0
  72. data/lib/puppet/provider/package/apple.rb +18 -16
  73. data/lib/puppet/provider/package/apt.rb +13 -15
  74. data/lib/puppet/provider/package/aptitude.rb +5 -3
  75. data/lib/puppet/provider/package/aptrpm.rb +9 -11
  76. data/lib/puppet/provider/package/blastwave.rb +9 -9
  77. data/lib/puppet/provider/package/darwinport.rb +12 -11
  78. data/lib/puppet/provider/package/dpkg.rb +20 -12
  79. data/lib/puppet/provider/package/fink.rb +87 -0
  80. data/lib/puppet/provider/package/freebsd.rb +10 -11
  81. data/lib/puppet/provider/package/gem.rb +15 -15
  82. data/lib/puppet/provider/package/openbsd.rb +12 -17
  83. data/lib/puppet/provider/package/pkgdmg.rb +90 -16
  84. data/lib/puppet/provider/package/portage.rb +20 -14
  85. data/lib/puppet/provider/package/ports.rb +15 -13
  86. data/lib/puppet/provider/package/rpm.rb +20 -23
  87. data/lib/puppet/provider/package/rug.rb +6 -8
  88. data/lib/puppet/provider/package/sun.rb +20 -18
  89. data/lib/puppet/provider/package/sunfreeware.rb +2 -2
  90. data/lib/puppet/provider/package/up2date.rb +6 -10
  91. data/lib/puppet/provider/package/urpmi.rb +51 -0
  92. data/lib/puppet/provider/package/yum.rb +15 -13
  93. data/lib/puppet/provider/parsedfile.rb +53 -63
  94. data/lib/puppet/provider/service/base.rb +13 -15
  95. data/lib/puppet/provider/service/debian.rb +4 -4
  96. data/lib/puppet/provider/service/gentoo.rb +4 -4
  97. data/lib/puppet/provider/service/init.rb +22 -15
  98. data/lib/puppet/provider/service/redhat.rb +6 -6
  99. data/lib/puppet/provider/service/smf.rb +6 -6
  100. data/lib/puppet/provider/user/netinfo.rb +5 -5
  101. data/lib/puppet/provider/user/pw.rb +10 -5
  102. data/lib/puppet/provider/user/useradd.rb +9 -14
  103. data/lib/puppet/provider/zone/solaris.rb +80 -45
  104. data/lib/puppet/rails.rb +3 -34
  105. data/lib/puppet/rails/database/schema.rb +45 -24
  106. data/lib/puppet/rails/fact_value.rb +1 -0
  107. data/lib/puppet/rails/host.rb +69 -40
  108. data/lib/puppet/rails/param_name.rb +3 -8
  109. data/lib/puppet/rails/param_value.rb +2 -1
  110. data/lib/puppet/rails/puppet_class.rb +0 -2
  111. data/lib/puppet/rails/puppet_tag.rb +5 -0
  112. data/lib/puppet/rails/resource.rb +41 -17
  113. data/lib/puppet/rails/resource_tag.rb +4 -0
  114. data/lib/puppet/reference/configuration.rb +149 -0
  115. data/lib/puppet/reference/function.rb +13 -0
  116. data/lib/puppet/reference/network.rb +37 -0
  117. data/lib/puppet/reference/providers.rb +118 -0
  118. data/lib/puppet/reference/report.rb +21 -0
  119. data/lib/puppet/reference/type.rb +152 -0
  120. data/lib/puppet/reports/rrdgraph.rb +21 -7
  121. data/lib/puppet/reports/tagmail.rb +4 -1
  122. data/lib/puppet/sslcertificates.rb +1 -49
  123. data/lib/puppet/sslcertificates/ca.rb +2 -79
  124. data/lib/puppet/sslcertificates/inventory.rb +0 -10
  125. data/lib/puppet/transaction.rb +24 -41
  126. data/lib/puppet/transaction/report.rb +27 -1
  127. data/lib/puppet/type.rb +7 -43
  128. data/lib/puppet/type/component.rb +198 -124
  129. data/lib/puppet/type/cron.rb +51 -42
  130. data/lib/puppet/type/exec.rb +20 -19
  131. data/lib/puppet/type/group.rb +6 -55
  132. data/lib/puppet/type/host.rb +16 -37
  133. data/lib/puppet/type/mount.rb +30 -17
  134. data/lib/puppet/type/notify.rb +7 -8
  135. data/lib/puppet/type/package.rb +44 -80
  136. data/lib/puppet/type/pfile.rb +50 -41
  137. data/lib/puppet/type/pfile/checksum.rb +82 -95
  138. data/lib/puppet/type/pfile/content.rb +21 -25
  139. data/lib/puppet/type/pfile/ensure.rb +32 -30
  140. data/lib/puppet/type/pfile/group.rb +21 -26
  141. data/lib/puppet/type/pfile/mode.rb +25 -32
  142. data/lib/puppet/type/pfile/owner.rb +23 -27
  143. data/lib/puppet/type/pfile/source.rb +42 -33
  144. data/lib/puppet/type/pfile/target.rb +20 -18
  145. data/lib/puppet/type/pfile/type.rb +6 -7
  146. data/lib/puppet/type/pfilebucket.rb +3 -3
  147. data/lib/puppet/type/port.rb +5 -7
  148. data/lib/puppet/type/property.rb +58 -61
  149. data/lib/puppet/type/resources.rb +12 -8
  150. data/lib/puppet/type/schedule.rb +8 -8
  151. data/lib/puppet/type/service.rb +26 -33
  152. data/lib/puppet/type/sshkey.rb +6 -7
  153. data/lib/puppet/type/tidy.rb +41 -35
  154. data/lib/puppet/type/user.rb +34 -67
  155. data/lib/puppet/type/yumrepo.rb +27 -12
  156. data/lib/puppet/type/zone.rb +71 -110
  157. data/lib/puppet/util.rb +46 -61
  158. data/lib/puppet/util/autoload.rb +59 -47
  159. data/lib/puppet/util/config.rb +160 -18
  160. data/lib/puppet/util/config_store.rb +61 -0
  161. data/lib/puppet/util/fact_store.rb +60 -0
  162. data/lib/puppet/util/instance_loader.rb +74 -0
  163. data/lib/puppet/util/loadedfile.rb +5 -8
  164. data/lib/puppet/util/metric.rb +17 -25
  165. data/lib/puppet/util/posix.rb +39 -7
  166. data/lib/puppet/util/provider_features.rb +9 -1
  167. data/lib/puppet/util/rails/collection_merger.rb +16 -1
  168. data/lib/puppet/util/reference.rb +189 -0
  169. data/lib/puppet/util/storage.rb +2 -2
  170. data/lib/puppet/util/subclass_loader.rb +9 -2
  171. data/test/language/ast.rb +4 -148
  172. data/test/language/ast/component.rb +10 -1
  173. data/test/language/collector.rb +1 -191
  174. data/test/language/interpreter.rb +284 -327
  175. data/test/language/lexer.rb +13 -1
  176. data/test/language/node.rb +1 -1
  177. data/test/language/parser.rb +17 -4
  178. data/test/language/resource.rb +67 -101
  179. data/test/language/scope.rb +18 -3
  180. data/test/language/snippets.rb +114 -151
  181. data/test/lib/puppettest.rb +13 -0
  182. data/test/lib/puppettest/exetest.rb +7 -0
  183. data/test/lib/puppettest/fakes.rb +39 -28
  184. data/test/lib/puppettest/railstesting.rb +1 -1
  185. data/test/lib/puppettest/support/assertions.rb +2 -2
  186. data/test/lib/puppettest/support/collection.rb +30 -0
  187. data/test/network/client/ca.rb +27 -1
  188. data/test/network/client/client.rb +3 -3
  189. data/test/network/client/master.rb +102 -1
  190. data/test/network/handler/ca.rb +35 -1
  191. data/test/network/handler/facts.rb +112 -0
  192. data/test/network/handler/fileserver.rb +25 -1
  193. data/test/network/handler/handler.rb +2 -2
  194. data/test/network/handler/master.rb +2 -49
  195. data/test/network/handler/resource.rb +5 -6
  196. data/test/network/server/mongrel_test.rb +65 -0
  197. data/test/network/server/webrick.rb +2 -2
  198. data/test/network/xmlrpc/client.rb +2 -1
  199. data/test/network/xmlrpc/processor.rb +2 -1
  200. data/test/other/pgraph.rb +6 -5
  201. data/test/other/propertychange.rb +11 -12
  202. data/test/other/report.rb +44 -27
  203. data/test/other/transactions.rb +17 -16
  204. data/test/puppet/tc_suidmanager.rb +2 -2
  205. data/test/rails/ast.rb +74 -0
  206. data/test/rails/collection.rb +214 -0
  207. data/test/rails/host.rb +49 -24
  208. data/test/rails/interpreter.rb +91 -0
  209. data/test/rails/railsparameter.rb +22 -11
  210. data/test/rails/railsresource.rb +140 -7
  211. data/test/ral/manager/attributes.rb +37 -13
  212. data/test/ral/manager/instances.rb +82 -0
  213. data/test/ral/manager/provider.rb +60 -22
  214. data/test/ral/manager/type.rb +9 -6
  215. data/test/ral/providers/cron/crontab.rb +59 -7
  216. data/test/ral/providers/group.rb +7 -7
  217. data/test/ral/providers/host/netinfo.rb +5 -6
  218. data/test/ral/providers/host/parsed.rb +4 -4
  219. data/test/ral/providers/mount/parsed.rb +11 -6
  220. data/test/ral/providers/nameservice.rb +2 -2
  221. data/test/ral/providers/package.rb +39 -14
  222. data/test/ral/providers/package/apt.rb +72 -3
  223. data/test/ral/providers/package/aptitude.rb +15 -12
  224. data/test/ral/providers/package/aptrpm.rb +3 -3
  225. data/test/ral/providers/package/dpkg.rb +2 -2
  226. data/test/ral/providers/parsedfile.rb +114 -88
  227. data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
  228. data/test/ral/providers/provider.rb +93 -13
  229. data/test/ral/providers/service.rb +52 -26
  230. data/test/ral/providers/sshkey/parsed.rb +3 -3
  231. data/test/ral/providers/user.rb +19 -20
  232. data/test/ral/providers/user/useradd.rb +1 -5
  233. data/test/ral/types/cron.rb +49 -36
  234. data/test/ral/types/file.rb +38 -35
  235. data/test/ral/types/file/target.rb +4 -4
  236. data/test/ral/types/filesources.rb +24 -22
  237. data/test/ral/types/group.rb +4 -2
  238. data/test/ral/types/host.rb +17 -10
  239. data/test/ral/types/mount.rb +40 -23
  240. data/test/ral/types/package.rb +62 -5
  241. data/test/ral/types/parameter.rb +2 -2
  242. data/test/ral/types/property.rb +27 -20
  243. data/test/ral/types/resources.rb +4 -16
  244. data/test/ral/types/schedule.rb +2 -2
  245. data/test/ral/types/service.rb +2 -3
  246. data/test/ral/types/sshkey.rb +3 -3
  247. data/test/ral/types/tidy.rb +6 -15
  248. data/test/ral/types/user.rb +17 -17
  249. data/test/ral/types/yumrepo.rb +2 -2
  250. data/test/ral/types/zone.rb +71 -87
  251. data/test/util/autoload.rb +6 -21
  252. data/test/util/config.rb +201 -101
  253. data/test/util/fact_store.rb +67 -0
  254. data/test/util/features.rb +9 -6
  255. data/test/util/instance_loader.rb +53 -0
  256. data/test/util/loadedfile.rb +17 -1
  257. data/test/util/metrics.rb +54 -57
  258. data/test/util/posixtest.rb +8 -11
  259. data/test/util/utiltest.rb +31 -2
  260. metadata +520 -492
  261. data/TODO +0 -4
  262. data/lib/puppet/network/client/logger.rb +0 -6
  263. data/lib/puppet/network/handler/logger.rb +0 -52
  264. data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
  265. data/lib/puppet/type/parsedtype.rb +0 -219
  266. data/test/network/handler/logger.rb +0 -183
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # = Usage
10
10
  #
11
- # puppetdoc [-a|--all] [-h|--help] [-m|--mode <text|pdf|trac> [-s|--section <[type]|configuration|report|function>]
11
+ # puppetdoc [-a|--all] [-h|--help] [-m|--mode <text|pdf|trac> [-r|--reference <[type]|configuration|..>]
12
12
  #
13
13
  # = Description
14
14
  #
@@ -28,12 +28,12 @@
28
28
  # mode::
29
29
  # Determine the output mode. Valid modes are 'text', 'trac', and 'pdf'. Note that 'trac' mode only works on Reductive Labs servers. The default mode is 'text'.
30
30
  #
31
- # section::
32
- # Handle a particular section. Available sections are 'type', 'configuration', 'report', and 'function'. The default section is 'type'.
31
+ # reference::
32
+ # Build a particular reference. Get a list of references by running +puppetdoc --list+.
33
33
  #
34
34
  # = Example
35
35
  #
36
- # $ puppetdoc > /tmp/type_reference.rst
36
+ # $ puppetdoc -r type > /tmp/type_reference.rst
37
37
  #
38
38
  # = Author
39
39
  #
@@ -45,191 +45,49 @@
45
45
  # Licensed under the GNU Public License
46
46
 
47
47
  require 'puppet'
48
-
49
- class PuppetDoc
50
- include Puppet::Util::Docs
51
- @@sections = {}
52
-
53
- attr_accessor :page, :depth, :header, :title
54
-
55
- def self.[](name)
56
- @@sections[name]
57
- end
58
-
59
- def self.each
60
- @@sections.sort { |a, b| a[0].to_s <=> b[0].to_s }.each { |name, instance| yield instance }
61
- end
62
-
63
- def self.footer
64
- "\n\n----------------\n\n*This page autogenerated on %s*\n" % Time.now
65
- end
66
-
67
- def self.page(*sections)
68
- depth = 4
69
- # Use the minimum depth
70
- sections.each do |name|
71
- section = @@sections[name] or raise "Could not find section %s" % name
72
- depth = section.depth if section.depth < depth
73
- end
74
- text = ".. contents:: :depth: 2\n\n"
75
- end
76
-
77
- def self.pdf(text)
78
- puts "creating pdf"
79
- File.open("/tmp/puppetdoc.txt", "w") do |f|
80
- f.puts text
81
- end
82
- rst2latex = %x{which rst2latex}
83
- if $? != 0 or rst2latex =~ /no /
84
- rst2latex = %x{which rst2latex.py}
85
- end
86
- if $? != 0 or rst2latex =~ /no /
87
- raise "Could not find rst2latex"
88
- end
89
- rst2latex.chomp!
90
- cmd = %{#{rst2latex} /tmp/puppetdoc.txt > /tmp/puppetdoc.tex}
91
- output = %x{#{cmd}}
92
- unless $? == 0
93
- $stderr.puts "rst2latex failed"
94
- $stderr.puts output
95
- exit(1)
96
- end
97
- $stderr.puts output
98
-
99
- # Now convert to pdf
100
- puts "handling pdf"
101
- Dir.chdir("/tmp") do
102
- %x{texi2pdf puppetdoc.tex >/dev/null 2>/dev/null}
103
- end
104
-
105
- #if FileTest.exists?("/tmp/puppetdoc.pdf")
106
- # FileUtils.mv("/tmp/puppetdoc.pdf", "/export/apache/docroots/reductivelabs.com/htdocs/downloads/puppet/reference.pdf")
107
- #end
108
- end
109
-
110
- def self.sections
111
- @@sections.keys.sort { |a,b| a.to_s <=> b.to_s }
112
- end
113
-
114
- HEADER_LEVELS = [nil, "=", "-", "+", "'", "~"]
115
-
116
- def h(name, level)
117
- return "%s\n%s\n" % [name, HEADER_LEVELS[level] * name.to_s.length]
118
- end
119
-
120
- def initialize(name, options = {}, &block)
121
- @name = name
122
- options.each do |option, value|
123
- send(option.to_s + "=", value)
124
- end
125
-
126
- meta_def(:generate, &block)
127
-
128
- @@sections[name] = self
129
-
130
- # Now handle the defaults
131
- @title ||= "%s Reference" % @name.to_s.capitalize
132
- @page ||= @title.gsub(/\s+/, '')
133
- @depth ||= 2
134
- @header ||= ""
135
- end
136
-
137
- # Indent every line in the chunk except those which begin with '..'.
138
- def indent(text, tab)
139
- return text.gsub(/(^|\A)/, tab).gsub(/^ +\.\./, "..")
140
- end
141
-
142
- def paramwrap(name, text, options = {})
143
- options[:level] ||= 5
144
- #str = "%s : " % name
145
- str = h(name, options[:level])
146
- if options[:namevar]
147
- str += "- **namevar**\n\n"
148
- end
149
- str += text
150
- #str += text.gsub(/\n/, "\n ")
151
-
152
- str += "\n\n"
153
- return str
154
- end
155
-
156
- def output(withcontents = true)
157
- # First the header
158
- text = h(@title, 1)
159
- text += "\n\n*This page is autogenerated; any changes will get overwritten*\n\n"
160
- if withcontents
161
- text += ".. contents:: :depth: %s\n\n" % @depth
162
- end
163
-
164
- text += @header
165
-
166
- text += generate()
167
-
168
- if withcontents
169
- text += self.class.footer
170
- end
171
-
172
- return text
173
- end
174
-
175
- def text
176
- puts output
177
- end
178
-
179
- def trac
180
- File.open("/tmp/puppetdoc.txt", "w") do |f|
181
-
182
- f.puts "{{{
183
- #!rst\n
184
- #{self.output}
185
- }}}"
186
- end
187
-
188
- puts "Writing %s reference to trac as %s" % [@name, @page]
189
- cmd = %{sudo trac-admin /export/svn/trac/puppet wiki import %s /tmp/puppetdoc.txt} % self.page
190
- output = %x{#{cmd}}
191
- unless $? == 0
192
- $stderr.puts "trac-admin failed"
193
- $stderr.puts output
194
- exit(1)
195
- end
196
- unless output =~ /^\s+/
197
- $stderr.puts output
198
- end
199
- end
200
-
201
- end
202
-
203
- require 'puppet'
48
+ require 'puppet/util/reference'
204
49
  require 'puppet/network/handler'
205
50
  require 'getoptlong'
206
51
 
207
52
  result = GetoptLong.new(
208
53
  [ "--all", "-a", GetoptLong::NO_ARGUMENT ],
54
+ [ "--list", "-l", GetoptLong::NO_ARGUMENT ],
55
+ [ "--format", "-f", GetoptLong::REQUIRED_ARGUMENT ],
209
56
  [ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
210
- [ "--section", "-s", GetoptLong::REQUIRED_ARGUMENT ],
57
+ [ "--reference", "-r", GetoptLong::REQUIRED_ARGUMENT ],
211
58
  [ "--help", "-h", GetoptLong::NO_ARGUMENT ]
212
59
  )
213
60
 
214
61
  debug = false
215
62
 
216
63
  $tab = " "
217
- options = {:sections => [], :mode => :text}
64
+ options = {:references => [], :mode => :text, :format => :to_rest}
65
+
66
+ Reference = Puppet::Util::Reference
218
67
 
219
68
  begin
220
69
  result.each { |opt,arg|
221
70
  case opt
222
71
  when "--all"
223
72
  options[:all] = true
73
+ when "--format"
74
+ method = "to_%s" % arg
75
+ if Reference.method_defined?(method)
76
+ options[:format] = method
77
+ else
78
+ raise "Invalid output format %s" % arg
79
+ end
224
80
  when "--mode"
225
- case arg
226
- when "text", "pdf", "trac":
81
+ if Reference.modes.include?(arg)
227
82
  options[:mode] = arg.intern
228
83
  else
229
84
  raise "Invalid output mode %s" % arg
230
85
  end
231
- when "--section"
232
- options[:sections] << arg.intern
86
+ when "--list"
87
+ puts Reference.references.collect { |r| Reference.reference(r).doc }.join("\n")
88
+ exit(0)
89
+ when "--reference"
90
+ options[:references] << arg.intern
233
91
  when "--help"
234
92
  if Puppet.features.usage?
235
93
  RDoc::usage && exit
@@ -244,360 +102,52 @@ rescue GetoptLong::InvalidOption => detail
244
102
  exit(1)
245
103
  end
246
104
 
247
- if options[:sections].empty?
248
- options[:sections] << :type
249
- end
250
-
251
- config = PuppetDoc.new :configuration, :depth => 1 do
252
- docs = {}
253
- Puppet.config.each do |name, object|
254
- docs[name] = object
255
- end
256
-
257
- str = ""
258
- docs.sort { |a, b|
259
- a[0].to_s <=> b[0].to_s
260
- }.each do |name, object|
261
- # Make each name an anchor
262
- header = name.to_s
263
- str += h(header, 3)
264
-
265
- # Print the doc string itself
266
- begin
267
- str += object.desc.gsub(/\n/, " ")
268
- rescue => detail
269
- puts detail.backtrace
270
- puts detail
271
- end
272
- str += "\n\n"
273
-
274
- # Now print the data about the item.
275
- str += ""
276
- val = object.default
277
- if name.to_s == "vardir"
278
- val = "/var/puppet"
279
- elsif name.to_s == "confdir"
280
- val = "/etc/puppet"
281
- end
282
- str += "- **Section**: %s\n" % object.section
283
- unless val == ""
284
- str += "- **Default**: %s\n" % val
285
- end
286
- str += "\n"
287
- end
288
-
289
- return str
290
- end
291
-
292
- config.header = "
293
- Specifying Configuration Parameters
294
- -----------------------------------
295
-
296
- Every Puppet executable (with the exception of ``puppetdoc``) accepts all of
297
- the arguments below, but not all of the arguments make sense for every executable.
298
- Each argument has a section listed with it in parentheses; often, that section
299
- will map to an executable (e.g., ``puppetd``), in which case it probably only
300
- makes sense for that one executable. If ``puppet`` is listed as the section,
301
- it is most likely an option that is valid for everyone.
302
-
303
- This will not always be the case. I have tried to be as thorough as possible
304
- in the descriptions of the arguments, so it should be obvious whether an
305
- argument is appropriate or not.
306
-
307
- These arguments can be supplied to the executables either as command-line
308
- arugments or in the configuration file for the appropriate executable. For
309
- instance, the command-line invocation below would set the configuration directory
310
- to ``/private/puppet``::
311
-
312
- $ puppetd --confdir=/private/puppet
313
-
314
- Note that boolean options are turned on and off with a slightly different syntax
315
- on the command line::
316
-
317
- $ puppetd --storeconfigs
318
-
319
- $ puppetd --no-storeconfigs
320
-
321
- The invocations above will enable and disable, respectively, the storage of
322
- the client configuration.
323
-
324
- As mentioned above, the configuration parameters can also be stored in a
325
- configuration file located in the configuration directory (`/etc/puppet`
326
- by default). The file is named for the executable it is intended for, for
327
- example `/etc/puppetd.conf` is the configuration file for `puppetd`.
328
-
329
- The file, which follows INI-style formatting, should contain a bracketed
330
- heading named for the executable, followed by pairs of parameters with their
331
- values. Here is an example of a very simple ``puppetd.conf`` file::
332
-
333
- [puppetd]
334
- confdir = /private/puppet
335
- storeconfigs = true
336
-
337
- Note that boolean parameters must be explicitly specified as `true` or
338
- `false` as seen above.
339
-
340
- If you're starting out with a fresh configuration, you may wish to let
341
- the executable generate a template configuration file for you by invoking
342
- the executable in question with the `--genconfig` command. The executable
343
- will print a template configuration to standard output, which can be
344
- redirected to a file like so::
345
-
346
- $ puppetd --genconfig > /etc/puppet/puppetd.conf
347
-
348
- Note that this invocation will \"clobber\" (throw away) the contents of any
349
- pre-existing `puppetd.conf` file, so make a backup of your present config
350
- if it contains valuable information.
351
-
352
- Like the `--genconfig` argument, the executables also accept a `--genmanifest`
353
- argument, which will generate a manifest that can be used to manage all of
354
- Puppet's directories and files and prints it to standard output. This can
355
- likewise be redirected to a file::
356
-
357
- $ puppetd --genmanifest > /etc/puppet/manifests/site.pp
358
-
359
- Puppet can also create user and group accounts for itself (one `puppet` group
360
- and one `puppet` user) if it is invoked as `root` with the `--mkusers` argument::
361
-
362
- $ puppetd --mkusers
363
-
364
- Signals
365
- -------
366
- The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
367
- handling. Both daemons catch (``SIGHUP``), which forces the server to restart
368
- tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGHUP``) will shut
369
- down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
370
-
371
- Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
372
- immediately begin a new configuration transaction with the server. This
373
- signal has no effect on ``puppetmasterd``.
374
-
375
- Configuration Parameter Reference
376
- ---------------------------------
377
- Below is a list of all documented parameters. Not all of them are valid with all
378
- Puppet executables, but the executables will ignore any inappropriate values.
379
-
380
- "
381
-
382
- report = PuppetDoc.new :report do
383
- Puppet::Network::Handler.report.reportdocs
384
- end
385
- report.header = "
386
- Puppet clients can report back to the server after each transaction. This
387
- transaction report is sent as a YAML dump of the
388
- ``Puppet::Transaction::Report`` class and includes every log message that was
389
- generated during the transaction along with as many metrics as Puppet knows how
390
- to collect. See `ReportsAndReporting Reports and Reporting`:trac:
391
- for more information on how to use reports.
392
-
393
- Currently, clients default to not sending in reports; you can enable reporting
394
- by setting the ``report`` parameter to true.
395
-
396
- To use a report, set the ``reports`` parameter on the server; multiple
397
- reports must be comma-separated. You can also specify ``none`` to disable
398
- reports entirely.
399
-
400
- Puppet provides multiple report handlers that will process client reports:
401
- "
402
-
403
- function = PuppetDoc.new :function do
404
- Puppet::Parser::Functions.functiondocs
405
- end
406
- function.header = "
407
- There are two types of functions in Puppet: Statements and rvalues.
408
- Statements stand on their own and do not return arguments; they are used for
409
- performing stand-alone work like importing. Rvalues return values and can
410
- only be used in a statement requiring a value, such as an assignment or a case
411
- statement.
412
-
413
- Here are the functions available in Puppet:
414
- "
415
-
416
- type = PuppetDoc.new :type do
417
- types = {}
418
- Puppet::Type.loadall
419
-
420
- Puppet::Type.eachtype { |type|
421
- next if type.name == :puppet
422
- next if type.name == :component
423
- types[type.name] = type
424
- }
425
-
426
- str = %{
427
- Metaparameters
428
- --------------
429
- Metaparameters are parameters that work with any element; they are part of the
430
- Puppet framework itself rather than being part of the implementation of any
431
- given instance. Thus, any defined metaparameter can be used with any instance
432
- in your manifest, including defined components.
433
-
434
- Available Metaparameters
435
- ++++++++++++++++++++++++
436
- }
437
- begin
438
- params = []
439
- Puppet::Type.eachmetaparam { |param|
440
- params << param
441
- }
442
-
443
- params.sort { |a,b|
444
- a.to_s <=> b.to_s
445
- }.each { |param|
446
- str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 4)
447
- #puts "<dt>" + param.to_s + "</dt>"
448
- #puts tab(1) + Puppet::Type.metaparamdoc(param).scrub.indent($tab)gsub(/\n\s*/,' ')
449
- #puts "<dd>"
450
- #puts indent(scrub(Puppet::Type.metaparamdoc(param)), $tab)
451
- #puts scrub(Puppet::Type.metaparamdoc(param))
452
- #puts "</dd>"
453
-
454
- #puts ""
455
- }
456
- rescue => detail
457
- puts detail.backtrace
458
- puts "incorrect metaparams: %s" % detail
459
- exit(1)
105
+ if options[:all]
106
+ # Don't add dynamic references to the "all" list.
107
+ options[:references] = Reference.references.reject do |ref|
108
+ Reference.reference(ref).dynamic?
460
109
  end
461
-
462
- str += %{
463
-
464
- Resource Types
465
- --------------
466
-
467
- - The *namevar* is the parameter used to uniquely identify a type instance.
468
- This is the parameter that gets assigned when a string is provided before
469
- the colon in a type declaration. In general, only developers will need to
470
- worry about which parameter is the ``namevar``.
471
-
472
- In the following code::
473
-
474
- file { "/etc/passwd":
475
- owner => root,
476
- group => root,
477
- mode => 644
478
- }
479
-
480
- ``/etc/passwd`` is considered the title of the file object (used for things like
481
- dependency handling), and because ``path`` is the namevar for ``file``, that
482
- string is assigned to the ``path`` parameter.
483
-
484
- - *Features* are abilities that some providers might not support. You can use the list
485
- of supported features to determine how a given provider can be used.
486
-
487
- - *Parameters* determine the specific configuration of the instance. They either
488
- directly modify the system (internally, these are called properties) or they affect
489
- how the instance behaves (e.g., adding a search path for ``exec`` instances
490
- or determining recursion on ``file`` instances).
491
-
492
- - *Providers* provide low-level functionality for a given resource type. This is
493
- usually in the form of calling out to external commands.
494
-
495
- When required binaries are specified for providers, fully qualifed paths
496
- indicate that the binary must exist at that specific path and unqualified
497
- binaries indicate that Puppet will search for the binary using the shell
498
- path.
499
-
500
- Resource types define features they can use, and providers can be tested to see
501
- which features they provide.
502
-
503
- }
504
-
505
- types.sort { |a,b|
506
- a.to_s <=> b.to_s
507
- }.each { |name,type|
508
-
509
- str += "
510
-
511
- ----------------
512
-
513
- "
514
-
515
- str += h(name, 3)
516
- str += scrub(type.doc) + "\n\n"
517
-
518
- # Handle the feature docs.
519
- if featuredocs = type.featuredocs
520
- str += h("Features", 4)
521
- str += featuredocs
522
- end
523
-
524
- docs = {}
525
- type.validproperties.sort { |a,b|
526
- a.to_s <=> b.to_s
527
- }.reject { |sname|
528
- property = type.propertybyname(sname)
529
- property.nodoc
530
- }.each { |sname|
531
- property = type.propertybyname(sname)
532
-
533
- unless property
534
- raise "Could not retrieve property %s on type %s" % [sname, type.name]
535
- end
536
-
537
- doc = nil
538
- unless doc = property.doc
539
- $stderr.puts "No docs for %s[%s]" % [type, sname]
540
- next
541
- end
542
- doc = doc.dup
543
- tmp = doc
544
- tmp = scrub(tmp)
545
-
546
- docs[sname] = tmp
547
- }
548
-
549
- str += h("Parameters", 4) + "\n"
550
- type.parameters.sort { |a,b|
551
- a.to_s <=> b.to_s
552
- }.each { |name,param|
553
- #docs[name] = indent(scrub(type.paramdoc(name)), $tab)
554
- docs[name] = scrub(type.paramdoc(name))
555
- }
556
-
557
- docs.sort { |a, b|
558
- a[0].to_s <=> b[0].to_s
559
- }.each { |name, doc|
560
- namevar = type.namevar == name and name != :name
561
- str += paramwrap(name, doc, :namevar => namevar)
562
- }
563
- str += "\n"
564
- }
565
-
566
- str
567
110
  end
568
111
 
569
- if options[:all]
570
- options[:sections] = PuppetDoc.sections
112
+ if options[:references].empty?
113
+ options[:references] << :type
571
114
  end
572
115
 
573
116
  case options[:mode]
574
117
  when :trac
575
- options[:sections].each do |name|
576
- section = PuppetDoc[name] or raise "Could not find section %s" % name
118
+ options[:references].each do |name|
119
+ section = Puppet::Util::Reference.reference(name) or raise "Could not find section %s" % name
577
120
  unless options[:mode] == :pdf
578
121
  section.trac
579
122
  end
580
123
  end
581
124
  else
582
- text = ".. contents:: :depth: 1\n\n"
583
- options[:sections].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
584
- section = PuppetDoc[name]
125
+ text = ""
126
+ if options[:references].length > 1
127
+ with_contents = false
128
+ else
129
+ with_contents = true
130
+ end
131
+ options[:references].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
132
+ section = Puppet::Util::Reference.reference(name)
585
133
 
586
134
  # Add the per-section text, but with no ToC
587
- text += section.output(false)
135
+ text += section.send(options[:format], with_contents)
588
136
  end
589
137
 
590
- text += PuppetDoc.footer
138
+ unless with_contents # We've only got one reference
139
+ text += Puppet::Util::Reference.footer
140
+ end
591
141
 
592
142
  # Replace the trac links, since they're invalid everywhere else
593
143
  text.gsub!(/`\w+\s+([^`]+)`:trac:/) { |m| $1 }
594
144
 
595
145
  if options[:mode] == :pdf
596
- PuppetDoc.pdf(text)
146
+ Puppet::Util::Reference.pdf(text)
597
147
  else
598
148
  puts text
599
149
  end
600
150
  end
601
151
 
602
152
 
603
- # $Id: puppetdoc 2412 2007-04-24 20:47:08Z luke $
153
+ # $Id: puppetdoc 2485 2007-05-08 19:29:38Z luke $