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
@@ -0,0 +1,21 @@
1
+ report = Puppet::Util::Reference.newreference :report, :doc => "All available transaction reports" do
2
+ Puppet::Network::Handler.report.reportdocs
3
+ end
4
+
5
+ report.header = "
6
+ Puppet clients can report back to the server after each transaction. This
7
+ transaction report is sent as a YAML dump of the
8
+ ``Puppet::Transaction::Report`` class and includes every log message that was
9
+ generated during the transaction along with as many metrics as Puppet knows how
10
+ to collect. See `ReportsAndReporting Reports and Reporting`:trac:
11
+ for more information on how to use reports.
12
+
13
+ Currently, clients default to not sending in reports; you can enable reporting
14
+ by setting the ``report`` parameter to true.
15
+
16
+ To use a report, set the ``reports`` parameter on the server; multiple
17
+ reports must be comma-separated. You can also specify ``none`` to disable
18
+ reports entirely.
19
+
20
+ Puppet provides multiple report handlers that will process client reports:
21
+ "
@@ -0,0 +1,152 @@
1
+ type = Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types and all their details" do
2
+ types = {}
3
+ Puppet::Type.loadall
4
+
5
+ Puppet::Type.eachtype { |type|
6
+ next if type.name == :puppet
7
+ next if type.name == :component
8
+ types[type.name] = type
9
+ }
10
+
11
+ str = %{
12
+ Metaparameters
13
+ --------------
14
+ Metaparameters are parameters that work with any element; they are part of the
15
+ Puppet framework itself rather than being part of the implementation of any
16
+ given instance. Thus, any defined metaparameter can be used with any instance
17
+ in your manifest, including defined components.
18
+
19
+ Available Metaparameters
20
+ ++++++++++++++++++++++++
21
+ }
22
+ begin
23
+ params = []
24
+ Puppet::Type.eachmetaparam { |param|
25
+ params << param
26
+ }
27
+
28
+ params.sort { |a,b|
29
+ a.to_s <=> b.to_s
30
+ }.each { |param|
31
+ str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 4)
32
+ #puts "<dt>" + param.to_s + "</dt>"
33
+ #puts tab(1) + Puppet::Type.metaparamdoc(param).scrub.indent($tab)gsub(/\n\s*/,' ')
34
+ #puts "<dd>"
35
+ #puts indent(scrub(Puppet::Type.metaparamdoc(param)), $tab)
36
+ #puts scrub(Puppet::Type.metaparamdoc(param))
37
+ #puts "</dd>"
38
+
39
+ #puts ""
40
+ }
41
+ rescue => detail
42
+ puts detail.backtrace
43
+ puts "incorrect metaparams: %s" % detail
44
+ exit(1)
45
+ end
46
+
47
+ str += %{
48
+
49
+ Resource Types
50
+ --------------
51
+
52
+ - The *namevar* is the parameter used to uniquely identify a type instance.
53
+ This is the parameter that gets assigned when a string is provided before
54
+ the colon in a type declaration. In general, only developers will need to
55
+ worry about which parameter is the ``namevar``.
56
+
57
+ In the following code::
58
+
59
+ file { "/etc/passwd":
60
+ owner => root,
61
+ group => root,
62
+ mode => 644
63
+ }
64
+
65
+ ``/etc/passwd`` is considered the title of the file object (used for things like
66
+ dependency handling), and because ``path`` is the namevar for ``file``, that
67
+ string is assigned to the ``path`` parameter.
68
+
69
+ - *Features* are abilities that some providers might not support. You can use the list
70
+ of supported features to determine how a given provider can be used.
71
+
72
+ - *Parameters* determine the specific configuration of the instance. They either
73
+ directly modify the system (internally, these are called properties) or they affect
74
+ how the instance behaves (e.g., adding a search path for ``exec`` instances
75
+ or determining recursion on ``file`` instances).
76
+
77
+ - *Providers* provide low-level functionality for a given resource type. This is
78
+ usually in the form of calling out to external commands.
79
+
80
+ When required binaries are specified for providers, fully qualifed paths
81
+ indicate that the binary must exist at that specific path and unqualified
82
+ binaries indicate that Puppet will search for the binary using the shell
83
+ path.
84
+
85
+ Resource types define features they can use, and providers can be tested to see
86
+ which features they provide.
87
+
88
+ }
89
+
90
+ types.sort { |a,b|
91
+ a.to_s <=> b.to_s
92
+ }.each { |name,type|
93
+
94
+ str += "
95
+
96
+ ----------------
97
+
98
+ "
99
+
100
+ str += h(name, 3)
101
+ str += scrub(type.doc) + "\n\n"
102
+
103
+ # Handle the feature docs.
104
+ if featuredocs = type.featuredocs
105
+ str += h("Features", 4)
106
+ str += featuredocs
107
+ end
108
+
109
+ docs = {}
110
+ type.validproperties.sort { |a,b|
111
+ a.to_s <=> b.to_s
112
+ }.reject { |sname|
113
+ property = type.propertybyname(sname)
114
+ property.nodoc
115
+ }.each { |sname|
116
+ property = type.propertybyname(sname)
117
+
118
+ unless property
119
+ raise "Could not retrieve property %s on type %s" % [sname, type.name]
120
+ end
121
+
122
+ doc = nil
123
+ unless doc = property.doc
124
+ $stderr.puts "No docs for %s[%s]" % [type, sname]
125
+ next
126
+ end
127
+ doc = doc.dup
128
+ tmp = doc
129
+ tmp = scrub(tmp)
130
+
131
+ docs[sname] = tmp
132
+ }
133
+
134
+ str += h("Parameters", 4) + "\n"
135
+ type.parameters.sort { |a,b|
136
+ a.to_s <=> b.to_s
137
+ }.each { |name,param|
138
+ #docs[name] = indent(scrub(type.paramdoc(name)), $tab)
139
+ docs[name] = scrub(type.paramdoc(name))
140
+ }
141
+
142
+ docs.sort { |a, b|
143
+ a[0].to_s <=> b[0].to_s
144
+ }.each { |name, doc|
145
+ namevar = type.namevar == name and name != :name
146
+ str += paramwrap(name, doc, :namevar => namevar)
147
+ }
148
+ str += "\n"
149
+ }
150
+
151
+ str
152
+ end
@@ -2,10 +2,11 @@ require 'puppet'
2
2
 
3
3
  Puppet::Network::Handler.report.newreport(:rrdgraph) do
4
4
  desc "Graph all available data about hosts using the RRD library. You
5
- must have the RRD binary ruby library installed to use this report, which
6
- you can get from `Tobias Oetiker's site`_.
5
+ must have the Ruby RRDtool library installed to use this report, which
6
+ you can get from `the RubyRRDTool RubyForge page`_. This package requires
7
+ the binary rrdtool2 package to be installed.
7
8
 
8
- .. _tobias oetiker's site: http://oss.oetiker.ch/rrdtool/pub/contrib/
9
+ .. _the RubyRRDTool RubyForge page: http://rubyforge.org/projects/rubyrrdtool/
9
10
 
10
11
  This report will create, manage, and graph RRD database files for each
11
12
  of the metrics generated during transactions, and it will create a
@@ -99,10 +100,10 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
99
100
  def process(time = nil)
100
101
  time ||= Time.now.to_i
101
102
 
102
- unless File.directory?(hostdir)
103
- # Some hackishness to create the dir
103
+ unless File.directory?(hostdir) and FileTest.writable?(hostdir)
104
+ # Some hackishness to create the dir with all of the right modes and ownership
104
105
  config = Puppet::Util::Config.new
105
- config.setdefaults(:reports, :hostdir => [hostdir, "eh"])
106
+ config.setdefaults(:reports, :hostdir => {:default => hostdir, :owner => Puppet[:user], :mode => 0755, :group => Puppet[:group], :desc => "eh"})
106
107
 
107
108
  # This creates the dir.
108
109
  config.use(:reports)
@@ -110,6 +111,11 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
110
111
 
111
112
  self.metrics.each do |name, metric|
112
113
  metric.basedir = hostdir
114
+
115
+ if name == "time"
116
+ timeclean(metric)
117
+ end
118
+
113
119
  metric.store(time)
114
120
 
115
121
  metric.graph
@@ -119,6 +125,14 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
119
125
  mkhtml()
120
126
  end
121
127
  end
128
+
129
+ # Unfortunately, RRD does not deal well with changing lists of values,
130
+ # so we have to pick a list of values and stick with it. In this case,
131
+ # that means we record the total time, the config time, and that's about
132
+ # it. We should probably send each type's time as a separate metric.
133
+ def timeclean(metric)
134
+ metric.values = metric.values.find_all { |name, label, value| [:total, :config_retrieval].include?(name) }
135
+ end
122
136
  end
123
137
 
124
- # $Id: rrdgraph.rb 2438 2007-04-30 18:15:01Z luke $
138
+ # $Id: rrdgraph.rb 2603 2007-06-18 16:26:22Z luke $
@@ -30,6 +30,9 @@ Puppet::Network::Handler.report.newreport(:tagmail) do
30
30
  webservers that are not also from mailservers to ``httpadmins@domain.com``.
31
31
  "
32
32
 
33
+
34
+ Puppet.config.use(:tagmail)
35
+
33
36
  # Find all matching messages.
34
37
  def match(taglists)
35
38
  reports = []
@@ -164,4 +167,4 @@ Puppet::Network::Handler.report.newreport(:tagmail) do
164
167
  end
165
168
  end
166
169
 
167
- # $Id: tagmail.rb 2406 2007-04-23 06:16:10Z luke $
170
+ # $Id: tagmail.rb 2463 2007-05-04 23:09:34Z luke $
@@ -9,54 +9,6 @@ rescue LoadError
9
9
  end
10
10
 
11
11
  module Puppet::SSLCertificates
12
- hostname = Facter["hostname"].value
13
- domain = Facter["domain"].value
14
- if domain and domain != ""
15
- fqdn = [hostname, domain].join(".")
16
- else
17
- fqdn = hostname
18
- end
19
-
20
- Puppet.setdefaults("certificates",
21
- :certname => [fqdn, "The name to use when handling certificates. Defaults
22
- to the fully qualified domain name."],
23
- :certdir => ["$ssldir/certs", "The certificate directory."],
24
- :publickeydir => ["$ssldir/public_keys", "The public key directory."],
25
- :privatekeydir => { :default => "$ssldir/private_keys",
26
- :mode => 0750,
27
- :desc => "The private key directory."
28
- },
29
- :privatedir => { :default => "$ssldir/private",
30
- :mode => 0750,
31
- :desc => "Where the client stores private certificate information."
32
- },
33
- :passfile => { :default => "$privatedir/password",
34
- :mode => 0640,
35
- :desc => "Where puppetd stores the password for its private key.
36
- Generally unused."
37
- },
38
- :hostcsr => { :default => "$ssldir/csr_$certname.pem",
39
- :mode => 0644,
40
- :desc => "Where individual hosts store and look for their certificates."
41
- },
42
- :hostcert => { :default => "$certdir/$certname.pem",
43
- :mode => 0644,
44
- :desc => "Where individual hosts store and look for their certificates."
45
- },
46
- :hostprivkey => { :default => "$privatekeydir/$certname.pem",
47
- :mode => 0600,
48
- :desc => "Where individual hosts store and look for their private key."
49
- },
50
- :hostpubkey => { :default => "$publickeydir/$certname.pem",
51
- :mode => 0644,
52
- :desc => "Where individual hosts store and look for their public key."
53
- },
54
- :localcacert => { :default => "$certdir/ca.pem",
55
- :mode => 0644,
56
- :desc => "Where each client stores the CA certificate."
57
- }
58
- )
59
-
60
12
  #def self.mkcert(type, name, ttl, issuercert, issuername, serial, publickey)
61
13
  def self.mkcert(hash)
62
14
  [:type, :name, :ttl, :issuer, :serial, :publickey].each { |param|
@@ -190,4 +142,4 @@ module Puppet::SSLCertificates
190
142
  require 'puppet/sslcertificates/ca'
191
143
  end
192
144
 
193
- # $Id: sslcertificates.rb 2376 2007-03-30 23:45:48Z luke $
145
+ # $Id: sslcertificates.rb 2463 2007-05-04 23:09:34Z luke $
@@ -4,83 +4,6 @@ class Puppet::SSLCertificates::CA
4
4
  Certificate = Puppet::SSLCertificates::Certificate
5
5
  attr_accessor :keyfile, :file, :config, :dir, :cert, :crl
6
6
 
7
- Puppet.setdefaults(:ca,
8
- :cadir => { :default => "$ssldir/ca",
9
- :owner => "$user",
10
- :group => "$group",
11
- :mode => 0770,
12
- :desc => "The root directory for the certificate authority."
13
- },
14
- :cacert => { :default => "$cadir/ca_crt.pem",
15
- :owner => "$user",
16
- :group => "$group",
17
- :mode => 0660,
18
- :desc => "The CA certificate."
19
- },
20
- :cakey => { :default => "$cadir/ca_key.pem",
21
- :owner => "$user",
22
- :group => "$group",
23
- :mode => 0660,
24
- :desc => "The CA private key."
25
- },
26
- :capub => { :default => "$cadir/ca_pub.pem",
27
- :owner => "$user",
28
- :group => "$group",
29
- :desc => "The CA public key."
30
- },
31
- :cacrl => { :default => "$cadir/ca_crl.pem",
32
- :owner => "$user",
33
- :group => "$group",
34
- :mode => 0664,
35
- :desc => "The certificate revocation list (CRL) for the CA. Set this to 'none' if you do not want to use a CRL."
36
- },
37
- :caprivatedir => { :default => "$cadir/private",
38
- :owner => "$user",
39
- :group => "$group",
40
- :mode => 0770,
41
- :desc => "Where the CA stores private certificate information."
42
- },
43
- :csrdir => { :default => "$cadir/requests",
44
- :owner => "$user",
45
- :group => "$group",
46
- :desc => "Where the CA stores certificate requests"
47
- },
48
- :signeddir => { :default => "$cadir/signed",
49
- :owner => "$user",
50
- :group => "$group",
51
- :mode => 0770,
52
- :desc => "Where the CA stores signed certificates."
53
- },
54
- :capass => { :default => "$caprivatedir/ca.pass",
55
- :owner => "$user",
56
- :group => "$group",
57
- :mode => 0660,
58
- :desc => "Where the CA stores the password for the private key"
59
- },
60
- :serial => { :default => "$cadir/serial",
61
- :owner => "$user",
62
- :group => "$group",
63
- :desc => "Where the serial number for certificates is stored."
64
- },
65
- :autosign => { :default => "$confdir/autosign.conf",
66
- :mode => 0644,
67
- :desc => "Whether to enable autosign. Valid values are true (which
68
- autosigns any key request, and is a very bad idea), false (which
69
- never autosigns any key request), and the path to a file, which
70
- uses that configuration file to determine which keys to sign."},
71
- :ca_days => ["", "How long a certificate should be valid.
72
- This parameter is deprecated, use ca_ttl instead"],
73
- :ca_ttl => ["5y", "The default TTL for new certificates; valid values
74
- must be an integer, optionally followed by one of the units
75
- 'y' (years of 365 days), 'd' (days), 'h' (hours), or
76
- 's' (seconds). The unit defaults to seconds. If this parameter
77
- is set, ca_days is ignored. Examples are '3600' (one hour)
78
- and '1825d', which is the same as '5y' (5 years) "],
79
- :ca_md => ["md5", "The type of hash used in certificates."],
80
- :req_bits => [2048, "The bit length of the certificates."],
81
- :keylength => [1024, "The bit length of keys."]
82
- )
83
-
84
7
  def certfile
85
8
  @config[:cacert]
86
9
  end
@@ -128,7 +51,7 @@ class Puppet::SSLCertificates::CA
128
51
  end
129
52
 
130
53
  def initialize(hash = {})
131
- Puppet.config.use(:puppet, :certificates, :ca)
54
+ Puppet.config.use(:main, :ca, :ssl)
132
55
  self.setconfig(hash)
133
56
 
134
57
  if Puppet[:capass]
@@ -459,4 +382,4 @@ class Puppet::SSLCertificates::CA
459
382
  end
460
383
  end
461
384
 
462
- # $Id: ca.rb 2259 2007-03-06 19:03:05Z luke $
385
+ # $Id: ca.rb 2463 2007-05-04 23:09:34Z luke $
@@ -3,16 +3,6 @@
3
3
  module Puppet::SSLCertificates
4
4
  module Inventory
5
5
 
6
- Puppet.config.setdefaults(:ca,
7
- :cert_inventory => {
8
- :default => "$cadir/inventory.txt",
9
- :mode => 0644,
10
- :owner => "$user",
11
- :group => "$group",
12
- :desc => "A Complete listing of all certificates"
13
- }
14
- )
15
-
16
6
  # Add CERT to the inventory of issued certs in '$cadir/inventory.txt'
17
7
  # If no inventory exists yet, build an inventory and list all the
18
8
  # certificates that have been signed so far
@@ -15,21 +15,6 @@ class Transaction
15
15
 
16
16
  include Puppet::Util
17
17
 
18
- Puppet.config.setdefaults(:puppet,
19
- :graph => [false, "Whether to create dot graph files for the different
20
- configuration graphs. These dot files can be interpreted by tools
21
- like OmniGraffle or dot (which is part of ImageMagick)."],
22
- :graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."]
23
- )
24
- Puppet.config.setdefaults(:transaction,
25
- :tags => ["", "Tags to use to find resources. If this is set, then
26
- only resources tagged with the specified tags will be applied.
27
- Values must be comma-separated."],
28
- :evaltrace => [false, "Whether each resource should log when it is
29
- being evaluated. This allows you to interactively see exactly
30
- what is being done."]
31
- )
32
-
33
18
  # Add some additional times for reporting
34
19
  def addtimes(hash)
35
20
  hash.each do |name, num|
@@ -122,7 +107,7 @@ class Transaction
122
107
  puts detail.backtrace
123
108
  end
124
109
  change.property.err "change from %s to %s failed: %s" %
125
- [change.property.is_to_s, change.property.should_to_s, detail]
110
+ [change.property.is_to_s(change.is), change.property.should_to_s(change.should), detail]
126
111
  @failures[resource] += 1
127
112
  next
128
113
  # FIXME this should support using onerror to determine
@@ -144,7 +129,7 @@ class Transaction
144
129
  # Find all of the changed resources.
145
130
  def changed?
146
131
  @changes.find_all { |change| change.changed }.collect { |change|
147
- change.property.parent
132
+ change.property.resource
148
133
  }.uniq
149
134
  end
150
135
 
@@ -409,16 +394,6 @@ class Transaction
409
394
  total
410
395
  end
411
396
 
412
- # Unfortunately, RRD does not deal well with changing lists of values,
413
- # so we have to pick a list of values and stick with it. In this case,
414
- # that means we record the total time, the config time, and that's about
415
- # it. We should probably send each type's time as a separate metric.
416
- @timemetrics.dup.each do |name, value|
417
- if Puppet::Type.type(name)
418
- @timemetrics.delete(name)
419
- end
420
- end
421
-
422
397
  # Add all of the metrics related to resource count and status
423
398
  @report.newmetric(:resources, @resourcemetrics)
424
399
 
@@ -442,6 +417,8 @@ class Transaction
442
417
 
443
418
  return unless Puppet[:graph]
444
419
 
420
+ Puppet.config.use(:graphing)
421
+
445
422
  file = File.join(Puppet[:graphdir], "%s.dot" % name.to_s)
446
423
  File.open(file, "w") { |f|
447
424
  f.puts gr.to_dot("name" => name.to_s.capitalize)
@@ -496,16 +473,24 @@ class Transaction
496
473
  # Prefetch any providers that support it. We don't support prefetching
497
474
  # types, just providers.
498
475
  def prefetch
499
- @resources.collect { |obj|
500
- if pro = obj.provider
501
- pro.class
502
- else
503
- nil
476
+ prefetchers = {}
477
+ @resources.each do |resource|
478
+ if provider = resource.provider and provider.class.respond_to?(:prefetch)
479
+ prefetchers[provider.class] ||= {}
480
+ prefetchers[provider.class][resource.title] = resource
504
481
  end
505
- }.reject { |o| o.nil? }.uniq.each do |klass|
506
- # XXX We need to do something special here in case of failure.
507
- if klass.respond_to?(:prefetch)
508
- klass.prefetch
482
+ end
483
+
484
+ # Now call prefetch, passing in the resources so that the provider instances can be replaced.
485
+ prefetchers.each do |provider, resources|
486
+ Puppet.debug "Prefetching %s resources for %s" % [provider.name, provider.resource_type.name]
487
+ begin
488
+ provider.prefetch(resources)
489
+ rescue => detail
490
+ if Puppet[:trace]
491
+ puts detail.backtrace
492
+ end
493
+ Puppet.err "Could not prefetch % provider %s: %s" % [resources[0].class.name, provider.name, detail]
509
494
  end
510
495
  end
511
496
  end
@@ -520,10 +505,8 @@ class Transaction
520
505
  # Create a relationship graph from our resource graph
521
506
  @relgraph = relationship_graph
522
507
 
508
+ # This will throw an error if there are cycles in the graph.
523
509
  @sorted_resources = @relgraph.topsort
524
-
525
- # Now make sure no cycles crept into our graph.
526
- @relgraph.check_cycle(@sorted_resources)
527
510
  end
528
511
 
529
512
  # Create a graph of all of the relationships in our resource graph.
@@ -596,7 +579,7 @@ class Transaction
596
579
  # Now check to see if there are any events for this child.
597
580
  # Kind of hackish, since going backwards goes a change at a
598
581
  # time, not a child at a time.
599
- trigger(change.property.parent)
582
+ trigger(change.property.resource)
600
583
 
601
584
  # And return the events for collection
602
585
  events
@@ -754,4 +737,4 @@ end
754
737
 
755
738
  require 'puppet/transaction/report'
756
739
 
757
- # $Id: transaction.rb 2372 2007-03-30 00:47:03Z luke $
740
+ # $Id: transaction.rb 2621 2007-06-18 21:56:11Z luke $