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,189 @@
1
+ require 'puppet/util/instance_loader'
2
+
3
+ # Manage Reference Documentation.
4
+ class Puppet::Util::Reference
5
+ include Puppet::Util
6
+ include Puppet::Util::Docs
7
+
8
+ extend Puppet::Util::InstanceLoader
9
+
10
+ autoload(:reference, 'puppet/reference')
11
+
12
+ def self.footer
13
+ "\n\n----------------\n\n*This page autogenerated on %s*\n" % Time.now
14
+ end
15
+
16
+ def self.modes
17
+ %w{pdf trac text}
18
+ end
19
+
20
+ def self.newreference(name, options = {}, &block)
21
+ ref = self.new(name, options, &block)
22
+ instance_hash(:reference)[symbolize(name)] = ref
23
+
24
+ ref
25
+ end
26
+
27
+ def self.page(*sections)
28
+ depth = 4
29
+ # Use the minimum depth
30
+ sections.each do |name|
31
+ section = reference(name) or raise "Could not find section %s" % name
32
+ depth = section.depth if section.depth < depth
33
+ end
34
+ text = ".. contents:: :depth: 2\n\n"
35
+ end
36
+
37
+ def self.pdf(text)
38
+ puts "creating pdf"
39
+ File.open("/tmp/puppetdoc.txt", "w") do |f|
40
+ f.puts text
41
+ end
42
+ rst2latex = %x{which rst2latex}
43
+ if $? != 0 or rst2latex =~ /no /
44
+ rst2latex = %x{which rst2latex.py}
45
+ end
46
+ if $? != 0 or rst2latex =~ /no /
47
+ raise "Could not find rst2latex"
48
+ end
49
+ rst2latex.chomp!
50
+ cmd = %{#{rst2latex} /tmp/puppetdoc.txt > /tmp/puppetdoc.tex}
51
+ output = %x{#{cmd}}
52
+ unless $? == 0
53
+ $stderr.puts "rst2latex failed"
54
+ $stderr.puts output
55
+ exit(1)
56
+ end
57
+ $stderr.puts output
58
+
59
+ # Now convert to pdf
60
+ puts "handling pdf"
61
+ Dir.chdir("/tmp") do
62
+ %x{texi2pdf puppetdoc.tex >/dev/null 2>/dev/null}
63
+ end
64
+
65
+ #if FileTest.exists?("/tmp/puppetdoc.pdf")
66
+ # FileUtils.mv("/tmp/puppetdoc.pdf", "/export/apache/docroots/reductivelabs.com/htdocs/downloads/puppet/reference.pdf")
67
+ #end
68
+ end
69
+
70
+ def self.references
71
+ instance_loader(:reference).loadall
72
+ loaded_instances(:reference).sort { |a,b| a.to_s <=> b.to_s }
73
+ end
74
+
75
+ HEADER_LEVELS = [nil, "=", "-", "+", "'", "~"]
76
+
77
+ attr_accessor :page, :depth, :header, :title, :dynamic
78
+ attr_writer :doc
79
+
80
+ def doc
81
+ if defined?(@doc)
82
+ return "%s - %s" % [@name, @doc]
83
+ else
84
+ return @title
85
+ end
86
+ end
87
+
88
+ def dynamic?
89
+ self.dynamic
90
+ end
91
+
92
+ def h(name, level)
93
+ return "%s\n%s\n\n" % [name, HEADER_LEVELS[level] * name.to_s.length]
94
+ end
95
+
96
+ def initialize(name, options = {}, &block)
97
+ @name = name
98
+ options.each do |option, value|
99
+ send(option.to_s + "=", value)
100
+ end
101
+
102
+ meta_def(:generate, &block)
103
+
104
+ # Now handle the defaults
105
+ @title ||= "%s Reference" % @name.to_s.capitalize
106
+ @page ||= @title.gsub(/\s+/, '')
107
+ @depth ||= 2
108
+ @header ||= ""
109
+ end
110
+
111
+ # Indent every line in the chunk except those which begin with '..'.
112
+ def indent(text, tab)
113
+ return text.gsub(/(^|\A)/, tab).gsub(/^ +\.\./, "..")
114
+ end
115
+
116
+ def option(name, value)
117
+ ":%s: %s\n" % [name.to_s.capitalize, value]
118
+ end
119
+
120
+ def paramwrap(name, text, options = {})
121
+ options[:level] ||= 5
122
+ #str = "%s : " % name
123
+ str = h(name, options[:level])
124
+ if options[:namevar]
125
+ str += "- **namevar**\n\n"
126
+ end
127
+ str += text
128
+ #str += text.gsub(/\n/, "\n ")
129
+
130
+ str += "\n\n"
131
+ return str
132
+ end
133
+
134
+ # Remove all trac links.
135
+ def strip_trac(text)
136
+ text.gsub(/`\w+\s+([^`]+)`:trac:/) { |m| $1 }
137
+ end
138
+
139
+ def text
140
+ puts output
141
+ end
142
+
143
+ def to_rest(withcontents = true)
144
+ # First the header
145
+ text = h(@title, 1)
146
+ text += "\n\n**This page is autogenerated; any changes will get overwritten**\n\n"
147
+ if withcontents
148
+ text += ".. contents:: :depth: %s\n\n" % @depth
149
+ end
150
+
151
+ text += @header
152
+
153
+ text += generate()
154
+
155
+ if withcontents
156
+ text += self.class.footer
157
+ end
158
+
159
+ return text
160
+ end
161
+
162
+ def to_text(withcontents = true)
163
+ strip_trac(to_rest(withcontents))
164
+ end
165
+
166
+ def to_trac(with_contents = true)
167
+ "{{{\n#!rst\n#{self.to_rest(with_contents)}\n}}}"
168
+ end
169
+
170
+ def trac
171
+ File.open("/tmp/puppetdoc.txt", "w") do |f|
172
+ f.puts self.to_trac
173
+ end
174
+
175
+ puts "Writing %s reference to trac as %s" % [@name, @page]
176
+ cmd = %{sudo trac-admin /export/svn/trac/puppet wiki import %s /tmp/puppetdoc.txt} % self.page
177
+ output = %x{#{cmd}}
178
+ unless $? == 0
179
+ $stderr.puts "trac-admin failed"
180
+ $stderr.puts output
181
+ exit(1)
182
+ end
183
+ unless output =~ /^\s+/
184
+ $stderr.puts output
185
+ end
186
+ end
187
+ end
188
+
189
+ # $Id: reference.rb 2485 2007-05-08 19:29:38Z luke $
@@ -46,7 +46,7 @@ class Puppet::Util::Storage
46
46
  self.init
47
47
 
48
48
  def self.load
49
- Puppet.config.use(:puppet)
49
+ Puppet.config.use(:main)
50
50
 
51
51
  unless File.exists?(Puppet[:statefile])
52
52
  unless defined? @@state and ! @@state.nil?
@@ -100,4 +100,4 @@ class Puppet::Util::Storage
100
100
  end
101
101
  end
102
102
 
103
- # $Id: storage.rb 2178 2007-02-07 23:56:59Z luke $
103
+ # $Id: storage.rb 2463 2007-05-04 23:09:34Z luke $
@@ -1,6 +1,8 @@
1
1
  # A module for loading subclasses into an array and retrieving
2
2
  # them by name. Also sets up a method for each class so
3
3
  # that you can just do Klass.subclass, rather than Klass.subclass(:subclass).
4
+ #
5
+ # This module is currently used by network handlers and clients.
4
6
  module Puppet::Util::SubclassLoader
5
7
  attr_accessor :loader, :classloader
6
8
 
@@ -48,7 +50,6 @@ module Puppet::Util::SubclassLoader
48
50
  # subclasses, thus the reason we're keeping track of the @@classloader.
49
51
  def inherited(sub)
50
52
  @subclasses ||= []
51
- @subclasses << sub
52
53
  sub.classloader = self.classloader
53
54
  if self.classloader == self
54
55
  @subclasses << sub
@@ -78,6 +79,12 @@ module Puppet::Util::SubclassLoader
78
79
 
79
80
  return @name
80
81
  end
82
+
83
+ # Provide a list of all subclasses.
84
+ def subclasses
85
+ @loader.loadall
86
+ @subclasses.collect { |klass| klass.name }
87
+ end
81
88
  end
82
89
 
83
- # $Id: subclass_loader.rb 2259 2007-03-06 19:03:05Z luke $
90
+ # $Id: subclass_loader.rb 2479 2007-05-07 22:29:44Z luke $
@@ -2,80 +2,17 @@
2
2
 
3
3
  $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
4
 
5
- require 'puppet'
6
- require 'puppet/rails'
5
+ require 'puppettest'
7
6
  require 'puppet/parser/interpreter'
8
7
  require 'puppet/parser/parser'
9
- require 'puppet/network/client'
10
- require 'puppettest'
11
8
  require 'puppettest/resourcetesting'
12
9
  require 'puppettest/parsertesting'
13
- require 'puppettest/railstesting'
10
+ require 'puppettest/support/collection'
14
11
 
15
12
  class TestAST < Test::Unit::TestCase
16
- include PuppetTest::RailsTesting
17
13
  include PuppetTest::ParserTesting
18
14
  include PuppetTest::ResourceTesting
19
-
20
- if defined? ActiveRecord
21
- # Verify that our collection stuff works.
22
- def test_collection
23
- collectable = []
24
- non = []
25
- # First put some objects into the database.
26
- bucket = mk_transtree do |object, depth, width|
27
- # and mark some of them collectable
28
- if width % 2 == 1
29
- object.collectable = true
30
- collectable << object
31
- else
32
- non << object
33
- end
34
- end
35
-
36
- # Now collect our facts
37
- facts = {}
38
- Facter.each do |fact, value| facts[fact] = value end
39
-
40
- assert_nothing_raised {
41
- Puppet::Rails.init
42
- }
43
-
44
- # Now try storing our crap
45
- assert_nothing_raised {
46
- host = Puppet::Rails::Host.store(
47
- :objects => bucket,
48
- :facts => facts,
49
- :host => facts["hostname"]
50
- )
51
- }
52
-
53
- # Now create an ast tree that collects that. They should all be files.
54
- coll = nil
55
- assert_nothing_raised {
56
- coll = AST::Collection.new(
57
- :type => nameobj("file")
58
- )
59
- }
60
-
61
- top = nil
62
- assert_nothing_raised("Could not create top object") {
63
- top = AST::ASTArray.new(
64
- :children => [coll]
65
- )
66
- }
67
-
68
- objects = nil
69
- assert_nothing_raised("Could not evaluate") {
70
- scope = mkscope
71
- objects = scope.evaluate(:ast => top).flatten
72
- }
73
-
74
- assert(objects.length > 0, "Did not receive any collected objects")
75
- end
76
- else
77
- $stderr.puts "No ActiveRecord -- skipping collection tests"
78
- end
15
+ include PuppetTest::Support::Collection
79
16
 
80
17
  def test_if
81
18
  astif = nil
@@ -251,87 +188,6 @@ class TestAST < Test::Unit::TestCase
251
188
  end
252
189
  end
253
190
  end
254
-
255
- if defined? ActiveRecord::Base
256
- def test_exported_collexp
257
- railsinit
258
- Puppet[:storeconfigs] = true
259
- @interp, @scope, @source = mkclassframing
260
-
261
- # make a rails resource
262
- railsresource "file", "/tmp/testing", :owner => "root", :group => "bin",
263
- :mode => "644"
264
-
265
- run_collection_queries(:exported) do |string, result, query|
266
- code = nil
267
- str = nil
268
-
269
- # We don't support anything but the title in rails right now
270
- retval = nil
271
- bad = false
272
- # Figure out if the search is for anything rails will ignore
273
- string.scan(/(\w+) [!=]= \w+/) do |s|
274
- unless s[0] == "title"
275
- bad = true
276
- break
277
- end
278
- end
279
-
280
- # And if it is, make sure we throw an error.
281
- if bad
282
- assert_raise(Puppet::ParseError, "Evaluated '#{string}'") do
283
- str, code = query.evaluate :scope => @scope
284
- end
285
- next
286
- else
287
- assert_nothing_raised("Could not evaluate '#{string}'") do
288
- str, code = query.evaluate :scope => @scope
289
- end
290
- end
291
- assert_nothing_raised("Could not find resource") do
292
- retval = Puppet::Rails::Resource.find(:all,
293
- :include => :param_values,
294
- :conditions => str)
295
- end
296
-
297
- if result
298
- assert_equal(1, retval.length, "Did not find resource with '#{string}'")
299
- res = retval.shift
300
-
301
- assert_equal("file", res.restype)
302
- assert_equal("/tmp/testing", res.title)
303
- else
304
- assert_equal(0, retval.length, "found a resource with '#{string}'")
305
- end
306
- end
307
- end
308
- end
309
-
310
- def run_collection_queries(form)
311
- {true => [%{title == "/tmp/testing"}, %{(title == "/tmp/testing")},
312
- %{title == "/tmp/testing" and group == bin}, %{title == bin or group == bin},
313
- %{title == "/tmp/testing" or title == bin}, %{title == "/tmp/testing"},
314
- %{(title == "/tmp/testing" or title == bin) and group == bin}],
315
- false => [%{title == bin}, %{title == bin or (title == bin and group == bin)},
316
- %{title != "/tmp/testing"}, %{title != "/tmp/testing" and group != bin}]
317
- }.each do |res, ary|
318
- ary.each do |str|
319
- if form == :virtual
320
- code = "File <| #{str} |>"
321
- else
322
- code = "File <<| #{str} |>>"
323
- end
324
- parser = mkparser
325
- query = nil
326
-
327
- assert_nothing_raised("Could not parse '#{str}'") do
328
- query = parser.parse(code)[0].query
329
- end
330
-
331
- yield str, res, query
332
- end
333
- end
334
- end
335
191
  end
336
192
 
337
- # $Id: ast.rb 2296 2007-03-18 22:48:57Z luke $
193
+ # $Id: ast.rb 2597 2007-06-17 21:41:50Z luke $
@@ -129,5 +129,14 @@ class TestASTComponent < Test::Unit::TestCase
129
129
  end
130
130
  end
131
131
  end
132
+
133
+ # Testing the root cause of #615. We should be using the fqname for the type, instead
134
+ # of just the short name.
135
+ def test_fully_qualified_types
136
+ interp = mkinterp
137
+ klass = interp.newclass("one::two")
138
+
139
+ assert_equal("one::two", klass.classname, "Class did not get fully qualified class name")
140
+ end
132
141
  end
133
- # $Id: component.rb 2301 2007-03-19 00:46:25Z luke $
142
+ # $Id: component.rb 2458 2007-05-03 20:45:25Z luke $
@@ -2,17 +2,14 @@
2
2
 
3
3
  $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
4
 
5
- require 'puppet/rails'
6
5
  require 'puppettest'
7
6
  require 'puppettest/parsertesting'
8
7
  require 'puppettest/resourcetesting'
9
- require 'puppettest/railstesting'
10
8
 
11
9
  class TestCollector < Test::Unit::TestCase
12
10
  include PuppetTest
13
11
  include PuppetTest::ParserTesting
14
12
  include PuppetTest::ResourceTesting
15
- include PuppetTest::RailsTesting
16
13
  Parser = Puppet::Parser
17
14
  AST = Parser::AST
18
15
 
@@ -142,193 +139,6 @@ class TestCollector < Test::Unit::TestCase
142
139
  assert_equal(false, ret)
143
140
  end
144
141
 
145
- if Puppet.features.rails?
146
- def test_collect_exported
147
- railsinit
148
-
149
- # Set a hostname
150
- @scope.host = Facter.value(:hostname)
151
-
152
- # make an exported resource
153
- exported = mkresource(:type => "file", :title => "/tmp/exported",
154
- :exported => true, :params => {:owner => "root"})
155
- @scope.setresource exported
156
-
157
- assert(exported.exported?, "Object was not marked exported")
158
- assert(exported.virtual?, "Object was not marked virtual")
159
-
160
- # And a non-exported
161
- real = mkresource(:type => "file", :title => "/tmp/real",
162
- :params => {:owner => "root"})
163
- @scope.setresource real
164
-
165
- # Now make a collector
166
- coll = nil
167
- assert_nothing_raised do
168
- coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
169
- end
170
-
171
- # Set it in our scope
172
- @scope.newcollection(coll)
173
-
174
- # Make sure it's in the collections
175
- assert_equal([coll], @scope.collections)
176
-
177
- # And try to collect the virtual resources.
178
- ret = nil
179
- assert_nothing_raised do
180
- ret = coll.collect_exported
181
- end
182
-
183
- assert_equal([exported], ret)
184
-
185
- # Now make sure evaluate does the right thing.
186
- assert_nothing_raised do
187
- ret = coll.evaluate
188
- end
189
-
190
- # Make sure that the collection does not find the resource on the
191
- # next run.
192
- ret = nil
193
- assert_nothing_raised do
194
- ret = coll.collect_exported
195
- end
196
-
197
- assert(ret.empty?, "Exported resource was collected on the second run")
198
-
199
-
200
- # And make sure our exported object is no longer exported
201
- assert(! exported.virtual?, "Virtual object did not get realized")
202
-
203
- # But it should still be marked exported.
204
- assert(exported.exported?, "Resource got un-exported")
205
-
206
- # Now make a new collector of a different type and make sure it
207
- # finds nothing.
208
- assert_nothing_raised do
209
- coll = Puppet::Parser::Collector.new(@scope, "exec", nil, nil, :exported)
210
- end
211
-
212
- # Remark this as virtual
213
- exported.virtual = true
214
-
215
- assert_nothing_raised do
216
- ret = coll.evaluate
217
- end
218
-
219
- assert(! ret, "got resources back")
220
-
221
- # Now create a whole new scope and make sure we can actually retrieve
222
- # the resource from the database, not just from the scope.
223
- # First create a host object and store our resource in it.
224
-
225
- # Now collect our facts
226
- facts = {}
227
- Facter.each do |fact, value| facts[fact] = value end
228
-
229
- # Now try storing our crap
230
- # Remark this as exported
231
- exported.exported = true
232
- host = Puppet::Rails::Host.store(
233
- :resources => [exported],
234
- :facts => facts,
235
- :name => facts["hostname"]
236
- )
237
- assert(host, "did not get rails host")
238
- host.save
239
-
240
- # And make sure it's in there
241
- newres = host.resources.find_by_restype_and_title_and_exported("file", "/tmp/exported", true)
242
- assert(newres, "Did not find resource in db")
243
- interp, scope, source = mkclassframing
244
- scope.host = "two"
245
-
246
- # Now make a collector
247
- coll = nil
248
- assert_nothing_raised do
249
- coll = Puppet::Parser::Collector.new(scope, "file", nil, nil, :exported)
250
- end
251
-
252
- # Set it in our scope
253
- scope.newcollection(coll)
254
-
255
- # Make sure it's in the collections
256
- assert_equal([coll], scope.collections)
257
-
258
- # And try to collect the virtual resources.
259
- ret = nil
260
- assert_nothing_raised do
261
- ret = coll.collect_exported
262
- end
263
-
264
- assert_equal(["/tmp/exported"], ret.collect { |f| f.title })
265
-
266
- # Make sure we can evaluate the same collection multiple times and
267
- # that later collections do nothing
268
- assert_nothing_raised("Collection found same resource twice") do
269
- ret = coll.evaluate
270
- end
271
- end
272
-
273
- def test_collection_conflicts
274
- railsinit
275
-
276
- # First make a railshost we can conflict with
277
- host = Puppet::Rails::Host.new(:name => "myhost")
278
-
279
- host.resources.build(:title => "/tmp/conflicttest", :restype => "file",
280
- :exported => true)
281
-
282
- host.save
283
-
284
- # Now make a normal resource
285
- normal = mkresource(:type => "file", :title => "/tmp/conflicttest",
286
- :params => {:owner => "root"})
287
- @scope.setresource normal
288
- @scope.host = "otherhost"
289
-
290
- # Now make a collector
291
- coll = nil
292
- assert_nothing_raised do
293
- coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
294
- end
295
-
296
- # And try to collect the virtual resources.
297
- assert_raise(Puppet::ParseError) do
298
- ret = coll.collect_exported
299
- end
300
- end
301
-
302
- # Make sure we do not collect resources from the host we're on
303
- def test_no_resources_from_me
304
- railsinit
305
-
306
- # Make our configuration
307
- host = Puppet::Rails::Host.new(:name => "myhost")
308
-
309
- host.resources.build(:title => "/tmp/hosttest", :type => "file",
310
- :exported => true)
311
-
312
- host.save
313
-
314
- @scope.host = "myhost"
315
-
316
- # Now make a collector
317
- coll = nil
318
- assert_nothing_raised do
319
- coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
320
- end
321
-
322
- # And make sure we get nada back
323
- ret = nil
324
- assert_nothing_raised do
325
- ret = coll.collect_exported
326
- end
327
-
328
- assert(ret.empty?, "Found exports from our own host")
329
- end
330
- end
331
-
332
142
  # Collections that specify resources should be deleted when they succeed,
333
143
  # but others should remain until the very end.
334
144
  def test_normal_collections_remain
@@ -366,4 +176,4 @@ class TestCollector < Test::Unit::TestCase
366
176
  end
367
177
  end
368
178
 
369
- # $Id: collector.rb 2213 2007-02-18 05:58:27Z luke $
179
+ # $Id: collector.rb 2597 2007-06-17 21:41:50Z luke $