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
@@ -118,6 +118,19 @@ module PuppetTest
118
118
  $0 =~ /test_loader/
119
119
  end
120
120
 
121
+ # Redirect stdout and stderr
122
+ def redirect
123
+ @stderr = tempfile
124
+ @stdout = tempfile
125
+ $stderr = File.open(@stderr, "w")
126
+ $stdout = File.open(@stdout, "w")
127
+
128
+ cleanup do
129
+ $stderr = STDERR
130
+ $stdout = STDOUT
131
+ end
132
+ end
133
+
121
134
  def setup
122
135
  @memoryatstart = Puppet::Util.memory
123
136
  if defined? @@testcount
@@ -13,10 +13,17 @@ module PuppetTest::ExeTest
13
13
  File.join(basedir, "bin")
14
14
  end
15
15
 
16
+ def sbindir
17
+ File.join(basedir, "sbin")
18
+ end
19
+
16
20
  def setbindir
17
21
  unless ENV["PATH"].split(":").include?(bindir)
18
22
  ENV["PATH"] = [bindir, ENV["PATH"]].join(":")
19
23
  end
24
+ unless ENV["PATH"].split(":").include?(sbindir)
25
+ ENV["PATH"] = [sbindir, ENV["PATH"]].join(":")
26
+ end
20
27
  end
21
28
 
22
29
  def setlibdir
@@ -5,12 +5,12 @@ module PuppetTest
5
5
  class FakeModel
6
6
  include Puppet::Util
7
7
  class << self
8
- attr_accessor :name, :realmodel
9
- @name = :fakemodel
8
+ attr_accessor :name, :realresource
9
+ @name = :fakeresource
10
10
  end
11
11
 
12
12
  def self.namevar
13
- @realmodel.namevar
13
+ @realresource.namevar
14
14
  end
15
15
 
16
16
  def self.validproperties
@@ -26,7 +26,7 @@ module PuppetTest
26
26
  end
27
27
 
28
28
  def [](param)
29
- if @realmodel.attrtype(param) == :property
29
+ if @realresource.attrtype(param) == :property
30
30
  @is[param]
31
31
  else
32
32
  @params[param]
@@ -35,11 +35,11 @@ module PuppetTest
35
35
 
36
36
  def []=(param, value)
37
37
  param = symbolize(param)
38
- unless @realmodel.validattr?(param)
38
+ unless @realresource.validattr?(param)
39
39
  raise Puppet::DevError, "Invalid attribute %s for %s" %
40
- [param, @realmodel.name]
40
+ [param, @realresource.name]
41
41
  end
42
- if @realmodel.attrtype(param) == :property
42
+ if @realresource.attrtype(param) == :property
43
43
  @should[param] = value
44
44
  else
45
45
  @params[param] = value
@@ -47,12 +47,12 @@ module PuppetTest
47
47
  end
48
48
 
49
49
  def initialize(name)
50
- @realmodel = Puppet::Type.type(self.class.name)
51
- raise "Could not find type #{self.class.name}" unless @realmodel
50
+ @realresource = Puppet::Type.type(self.class.name)
51
+ raise "Could not find type #{self.class.name}" unless @realresource
52
52
  @is = {}
53
53
  @should = {}
54
54
  @params = {}
55
- self[@realmodel.namevar] = name
55
+ self[@realresource.namevar] = name
56
56
  end
57
57
 
58
58
  def inspect
@@ -83,9 +83,9 @@ module PuppetTest
83
83
  end
84
84
 
85
85
  class FakeProvider
86
- attr_accessor :model
86
+ attr_accessor :resource
87
87
  class << self
88
- attr_accessor :name, :model, :methods
88
+ attr_accessor :name, :resource_type, :methods
89
89
  end
90
90
 
91
91
  # A very low number, so these never show up as defaults via the standard
@@ -96,7 +96,7 @@ module PuppetTest
96
96
 
97
97
  # Set up methods to fake things
98
98
  def self.apimethods(*ary)
99
- @model.validproperties.each do |property|
99
+ @resource_type.validproperties.each do |property|
100
100
  ary << property unless ary.include? property
101
101
  end
102
102
  attr_accessor(*ary)
@@ -114,6 +114,10 @@ module PuppetTest
114
114
  end
115
115
  end
116
116
 
117
+ def self.source
118
+ self.name
119
+ end
120
+
117
121
  def self.supports_parameter?(param)
118
122
  true
119
123
  end
@@ -123,11 +127,18 @@ module PuppetTest
123
127
  end
124
128
 
125
129
  def clear
126
- @model = nil
130
+ @resource = nil
127
131
  end
128
132
 
129
- def initialize(model)
130
- @model = model
133
+ def initialize(resource)
134
+ @resource = resource
135
+ end
136
+
137
+ def properties
138
+ self.class.resource_type.validproperties.inject({}) do |props, name|
139
+ props[name] = self.send(name) || :absent
140
+ props
141
+ end
131
142
  end
132
143
  end
133
144
 
@@ -154,30 +165,30 @@ module PuppetTest
154
165
  end
155
166
  end
156
167
 
157
- @@fakemodels = {}
168
+ @@fakeresources = {}
158
169
  @@fakeproviders = {}
159
170
 
160
- def fakemodel(type, name, options = {})
171
+ def fakeresource(type, name, options = {})
161
172
  type = type.intern if type.is_a? String
162
- unless @@fakemodels.include? type
163
- @@fakemodels[type] = Class.new(FakeModel)
164
- @@fakemodels[type].name = type
173
+ unless @@fakeresources.include? type
174
+ @@fakeresources[type] = Class.new(FakeModel)
175
+ @@fakeresources[type].name = type
165
176
 
166
- model = Puppet::Type.type(type)
167
- raise("Could not find type %s" % type) unless model
168
- @@fakemodels[type].realmodel = model
177
+ resource = Puppet::Type.type(type)
178
+ raise("Could not find type %s" % type) unless resource
179
+ @@fakeresources[type].realresource = resource
169
180
  end
170
181
 
171
- obj = @@fakemodels[type].new(name)
182
+ obj = @@fakeresources[type].new(name)
172
183
  options.each do |name, val|
173
184
  obj[name] = val
174
185
  end
175
186
  obj
176
187
  end
177
188
 
178
- module_function :fakemodel
189
+ module_function :fakeresource
179
190
 
180
- def fakeprovider(type, model)
191
+ def fakeprovider(type, resource)
181
192
  type = type.intern if type.is_a? String
182
193
  unless @@fakeproviders.include? type
183
194
  @@fakeproviders[type] = Class.new(FakeModel) do
@@ -185,7 +196,7 @@ module PuppetTest
185
196
  end
186
197
  end
187
198
 
188
- @@fakeproviders[type].new(model)
199
+ @@fakeproviders[type].new(resource)
189
200
  end
190
201
 
191
202
  module_function :fakeprovider
@@ -53,4 +53,4 @@ module PuppetTest::RailsTesting
53
53
  end
54
54
  end
55
55
 
56
- # $Id: railstesting.rb 1979 2006-12-28 08:06:46Z luke $
56
+ # $Id: railstesting.rb 2567 2007-06-12 00:38:03Z ballman $
@@ -34,8 +34,8 @@ module PuppetTest
34
34
  FileUtils.rm(filename)
35
35
  end
36
36
 
37
- def assert_rollback_events(events, trans, msg = nil)
38
- run_events(:rollback, events, trans, msg)
37
+ def assert_rollback_events(trans, events, msg = nil)
38
+ run_events(:rollback, trans, events, msg)
39
39
  end
40
40
 
41
41
  def assert_events(events, *items)
@@ -0,0 +1,30 @@
1
+
2
+ module PuppetTest::Support::Collection
3
+ def run_collection_queries(form)
4
+ {true => [%{title == "/tmp/testing"}, %{(title == "/tmp/testing")},
5
+ %{title == "/tmp/testing" and group == bin}, %{title == bin or group == bin},
6
+ %{title == "/tmp/testing" or title == bin}, %{title == "/tmp/testing"},
7
+ %{(title == "/tmp/testing" or title == bin) and group == bin}],
8
+ false => [%{title == bin}, %{title == bin or (title == bin and group == bin)},
9
+ %{title != "/tmp/testing"}, %{title != "/tmp/testing" and group != bin}]
10
+ }.each do |res, ary|
11
+ ary.each do |str|
12
+ if form == :virtual
13
+ code = "File <| #{str} |>"
14
+ else
15
+ code = "File <<| #{str} |>>"
16
+ end
17
+ parser = mkparser
18
+ query = nil
19
+
20
+ assert_nothing_raised("Could not parse '#{str}'") do
21
+ query = parser.parse(code)[0].query
22
+ end
23
+
24
+ yield str, res, query
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ # $Id: collection.rb 2597 2007-06-17 21:41:50Z luke $
@@ -2,6 +2,7 @@
2
2
 
3
3
  $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
4
 
5
+ require 'mocha'
5
6
  require 'puppettest'
6
7
  require 'puppet/network/client/ca'
7
8
  require 'puppet/sslcertificates/support'
@@ -33,6 +34,31 @@ class TestClientCA < Test::Unit::TestCase
33
34
  client = Puppet::Network::Client.ca.new
34
35
  end
35
36
  end
37
+
38
+ # #578
39
+ def test_invalid_certs_are_not_written
40
+ # Run the get once, which should be valid
41
+
42
+ assert_nothing_raised("Could not get a certificate") do
43
+ @client.request_cert
44
+ end
45
+
46
+ # Now remove the cert and keys, so we get a broken cert
47
+ File.unlink(Puppet[:hostcert])
48
+ File.unlink(Puppet[:localcacert])
49
+ File.unlink(Puppet[:hostprivkey])
50
+
51
+ @client = Puppet::Network::Client.ca.new :CA => @ca
52
+ @ca.expects(:getcert).returns("yay") # not a valid cert
53
+ # Now make sure it fails, since we'll get the old cert but have new keys
54
+ assert_raise(Puppet::Network::Client::CA::InvalidCertificate, "Did not fail on invalid cert") do
55
+ @client.request_cert
56
+ end
57
+
58
+ # And then make sure the cert isn't written to disk
59
+ assert(! FileTest.exists?(Puppet[:hostcert]),
60
+ "Invalid cert got written to disk")
61
+ end
36
62
  end
37
63
 
38
- # $Id: ca.rb 2263 2007-03-08 00:21:38Z luke $
64
+ # $Id: ca.rb 2612 2007-06-18 19:51:17Z luke $
@@ -115,7 +115,7 @@ class TestClient < Test::Unit::TestCase
115
115
  Puppet[:ssldir] = confdir
116
116
  Puppet.config.mkdir(:ssldir)
117
117
  Puppet.config.clearused
118
- Puppet.config.use(:certificates, :ca)
118
+ Puppet.config.use(:ssl, :ca)
119
119
 
120
120
  mkserver
121
121
 
@@ -216,7 +216,7 @@ class TestClient < Test::Unit::TestCase
216
216
 
217
217
  # Make sure we get a client class for each handler type.
218
218
  def test_loading_all_clients
219
- %w{ca dipper file logger master report resource runner status}.each do |name|
219
+ %w{ca dipper file master report resource runner status}.each do |name|
220
220
  client = nil
221
221
  assert_nothing_raised do
222
222
  client = Puppet::Network::Client.client(name)
@@ -256,4 +256,4 @@ class TestClient < Test::Unit::TestCase
256
256
  end
257
257
  end
258
258
 
259
- # $Id: client.rb 2375 2007-03-30 23:17:40Z luke $
259
+ # $Id: client.rb 2497 2007-05-09 16:21:56Z luke $
@@ -3,6 +3,7 @@
3
3
  $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
4
 
5
5
  require 'puppettest'
6
+ require 'mocha'
6
7
 
7
8
  class TestMasterClient < Test::Unit::TestCase
8
9
  include PuppetTest::ServerTest
@@ -622,6 +623,106 @@ end
622
623
  assert(! master.send(:lockfile).locked?,
623
624
  "Master is still locked after failure")
624
625
  end
626
+
627
+ # Make sure we get a value for timeout
628
+ def test_config_timeout
629
+ master = Puppet::Network::Client.client(:master)
630
+ time = Integer(Puppet[:configtimeout])
631
+ assert_equal(time, master.timeout, "Did not get default value for timeout")
632
+ assert_equal(time, master.timeout, "Did not get default value for timeout on second run")
633
+
634
+ # Reset it
635
+ Puppet[:configtimeout] = "50"
636
+ assert_equal(50, master.timeout, "Did not get changed default value for timeout")
637
+ assert_equal(50, master.timeout, "Did not get changed default value for timeout on second run")
638
+
639
+ # Now try an integer
640
+ Puppet[:configtimeout] = 100
641
+ assert_equal(100, master.timeout, "Did not get changed integer default value for timeout")
642
+ assert_equal(100, master.timeout, "Did not get changed integer default value for timeout on second run")
643
+ end
644
+
645
+ # #569 -- Make sure we can ignore dynamic facts.
646
+ def test_dynamic_facts
647
+ client = mkclient
648
+
649
+ assert_equal(%w{memorysize memoryfree swapsize swapfree}, client.class.dynamic_facts,
650
+ "Did not get correct defaults for dynamic facts")
651
+
652
+ # Cache some values for comparison
653
+ cached = {"one" => "yep", "two" => "nope"}
654
+ Puppet::Util::Storage.cache(:configuration)[:facts] = cached
655
+
656
+ assert(! client.send(:facts_changed?, cached), "Facts incorrectly considered to be changed")
657
+
658
+ # Now add some values to the passed result and make sure we get a positive
659
+ newfacts = cached.dup
660
+ newfacts["changed"] = "something"
661
+
662
+ assert(client.send(:facts_changed?, newfacts), "Did not catch changed fact")
663
+
664
+ # Now add a dynamic fact and make sure it's ignored
665
+ newfacts = cached.dup
666
+ newfacts["memorysize"] = "something"
667
+
668
+ assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
669
+
670
+ # And try it with both
671
+ cached["memorysize"] = "something else"
672
+ assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
673
+
674
+ # And finally, with only in the cache
675
+ newfacts.delete("memorysize")
676
+ assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
677
+ end
678
+
679
+ def test_splay
680
+ client = mkclient
681
+
682
+ # Make sure we default to no splay
683
+ client.expects(:sleep).never
684
+
685
+ assert_nothing_raised("Failed to call splay") do
686
+ client.send(:splay)
687
+ end
688
+
689
+ # Now set it to true and make sure we get the right value
690
+ client = mkclient
691
+ client.expects(:sleep)
692
+
693
+ Puppet[:splay] = true
694
+ assert_nothing_raised("Failed to call sleep when splay is true") do
695
+ client.send(:splay)
696
+ end
697
+
698
+ time = Puppet::Util::Storage.cache(:configuration)[:splay_time]
699
+ assert(time, "Splay time was not cached")
700
+
701
+ # Now try it again
702
+ client = mkclient
703
+ client.expects(:sleep).with(time)
704
+
705
+ assert_nothing_raised("Failed to call sleep when splay is true with a cached value") do
706
+ client.send(:splay)
707
+ end
708
+ end
709
+
710
+ # This is partially to fix #532, but also to save on memory.
711
+ def test_remove_objects_after_every_run
712
+ client = mkclient
713
+
714
+ ftype = Puppet::Type.type(:file)
715
+
716
+ assert_nil(ftype[@createdfile], "file object already exists")
717
+ assert(! FileTest.exists?(@createdfile), "File already exists on disk")
718
+
719
+ assert_nothing_raised("Could not apply config") do
720
+ client.run
721
+ end
722
+
723
+ assert(FileTest.exists?(@createdfile), "File does not exist on disk")
724
+ assert_nil(ftype[@createdfile], "file object was not removed from memory")
725
+ end
625
726
  end
626
727
 
627
- # $Id: master.rb 2326 2007-03-19 19:39:26Z luke $
728
+ # $Id: master.rb 2545 2007-05-31 22:47:01Z luke $
@@ -229,6 +229,40 @@ class TestCA < Test::Unit::TestCase
229
229
  # And try a different host
230
230
  assert(! caserv.autosign?("other.yay.com"), "Host was autosigned")
231
231
  end
232
+
233
+ # Make sure that a CSR created with keys that don't match the existing
234
+ # cert throws an exception on the server.
235
+ def test_mismatched_public_keys_throws_exception
236
+ ca = Puppet::Network::Handler.ca.new()
237
+
238
+ # First initialize the server
239
+ client = Puppet::Network::Client.ca.new :CA => ca
240
+ client.request_cert
241
+ File.unlink(Puppet[:hostcsr])
242
+
243
+ # Now use a different cert name
244
+ Puppet[:certname] = "my.host.com"
245
+ client = Puppet::Network::Client.ca.new :CA => ca
246
+ firstcsr = client.csr
247
+ File.unlink(Puppet[:hostcsr]) if FileTest.exists?(Puppet[:hostcsr])
248
+
249
+ assert_nothing_raised("Could not get cert") do
250
+ ca.getcert(firstcsr.to_s)
251
+ end
252
+
253
+ # Now get rid of the public key, forcing a new csr
254
+ File.unlink(Puppet[:hostprivkey])
255
+
256
+ client = Puppet::Network::Client.ca.new :CA => ca
257
+
258
+ second_csr = client.csr
259
+
260
+ assert(firstcsr.to_s != second_csr.to_s, "CSR did not change")
261
+
262
+ assert_raise(Puppet::Error, "CA allowed mismatched keys") do
263
+ ca.getcert(second_csr.to_s)
264
+ end
265
+ end
232
266
  end
233
267
 
234
- # $Id: ca.rb 2259 2007-03-06 19:03:05Z luke $
268
+ # $Id: ca.rb 2612 2007-06-18 19:51:17Z luke $