puppet 0.22.4 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -23,10 +23,10 @@ class TestYumRepo < Test::Unit::TestCase
23
23
  def test_modify
24
24
  copy_datafiles
25
25
  devel = make_repo("development", { :descr => "New description" })
26
- devel.retrieve
26
+ current_values = devel.retrieve
27
27
  assert_equal("development", devel[:name])
28
28
  assert_equal('Fedora Core $releasever - Development Tree',
29
- devel.property(:descr).is)
29
+ current_values[devel.property(:descr)])
30
30
  assert_equal('New description',
31
31
  devel.property(:descr).should)
32
32
  assert_apply(devel)
@@ -5,42 +5,14 @@ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
5
5
  require 'puppettest'
6
6
  require 'puppet/type/zone'
7
7
 
8
- class TestZone < Test::Unit::TestCase
9
- include PuppetTest
10
-
11
- def test_nothing
12
- end
13
-
14
- # Zones can only be tested on solaris.
15
- if Facter["operatingsystem"].value == "Solaris"
8
+ class TestZone < PuppetTest::TestCase
9
+ confine "Zones are only functional on Solaris" => (Facter["operatingsystem"].value == "Solaris")
16
10
 
17
11
  def setup
18
12
  super
19
13
  @@zones = []
20
14
  end
21
15
 
22
- def teardown
23
- current = %x{zoneadm list -cp}.split("\n").inject({}) { |h, line|
24
- ary = line.split(":")
25
- h[ary[1]] = ary[2]
26
- h
27
- }
28
-
29
- Puppet::Type.type(:zone).clear
30
-
31
- # Get rid of any lingering zones
32
- @@zones.each do |zone|
33
- next unless current.include? zone
34
-
35
- obj = Puppet::Type.type(:zone).create(:name => zone)
36
- obj[:ensure] = :absent
37
- assert_apply(obj)
38
- end
39
-
40
- # We can't delete the temp files until the zones are stopped and removed.
41
- super
42
- end
43
-
44
16
  def mkzone(name)
45
17
  zone = nil
46
18
 
@@ -61,10 +33,10 @@ class TestZone < Test::Unit::TestCase
61
33
  return zone
62
34
  end
63
35
 
64
- def test_list
36
+ def test_instances
65
37
  list = nil
66
38
  assert_nothing_raised {
67
- list = Puppet::Type.type(:zone).list
39
+ list = Puppet::Type.type(:zone).instances
68
40
  }
69
41
 
70
42
  assert(! list.empty?, "Got no zones back")
@@ -72,14 +44,14 @@ class TestZone < Test::Unit::TestCase
72
44
  assert(list.find { |z| z[:name] == "global" }, "Could not find global zone")
73
45
  end
74
46
 
75
- def test_valueslice
47
+ def test_state_sequence
76
48
  zone = mkzone("slicetest")
77
49
 
78
50
  property = zone.property(:ensure)
79
51
 
80
52
  slice = nil
81
53
  assert_nothing_raised {
82
- slice = property.class.valueslice(:absent, :installed).collect do |o|
54
+ slice = property.class.state_sequence(:absent, :installed).collect do |o|
83
55
  o[:name]
84
56
  end
85
57
  }
@@ -88,7 +60,7 @@ class TestZone < Test::Unit::TestCase
88
60
  assert_equal([:configured, :installed], slice)
89
61
 
90
62
  assert_nothing_raised {
91
- slice = property.class.valueslice(:running, :installed).collect do |o|
63
+ slice = property.class.state_sequence(:running, :installed).collect do |o|
92
64
  o[:name]
93
65
  end
94
66
  }
@@ -106,15 +78,15 @@ class TestZone < Test::Unit::TestCase
106
78
 
107
79
  assert(property, "Did not get ensure property")
108
80
 
81
+ values = nil
109
82
  assert_nothing_raised {
110
- zone.retrieve
83
+ values = zone.retrieve
111
84
  }
112
85
 
113
- assert(! property.insync?, "Property is somehow in sync")
86
+ assert(! property.insync?(values[property]), "Property is somehow in sync")
114
87
 
115
88
  assert(property.up?, "Property incorrectly thinks it is not moving up")
116
89
 
117
- zone.is = [:ensure, :configured]
118
90
  zone[:ensure] = :installed
119
91
  assert(property.up?, "Property incorrectly thinks it is not moving up")
120
92
  zone[:ensure] = :absent
@@ -128,7 +100,7 @@ class TestZone < Test::Unit::TestCase
128
100
 
129
101
  property = zone.property(:ensure)
130
102
  assert_nothing_raised {
131
- property.class.valueslice(:absent, :running).each do |st|
103
+ property.class.state_sequence(:absent, :running).each do |st|
132
104
  [:up, :down].each do |m|
133
105
  if st[m]
134
106
  methods << st[m]
@@ -161,7 +133,7 @@ class TestZone < Test::Unit::TestCase
161
133
  assert_equal("add inherit-pkg-dir\nset dir=/usr\nend", property.configtext,
162
134
  "Got incorrect config text")
163
135
 
164
- property.is = "/usr"
136
+ zone.provider.inherit = "/usr"
165
137
 
166
138
  assert_equal("", property.configtext,
167
139
  "Got incorrect config text")
@@ -180,7 +152,7 @@ end"
180
152
  assert_equal(text, property.configtext,
181
153
  "Got incorrect config text")
182
154
 
183
- property.is = %w{/usr /sbin /lib}
155
+ zone.provider.inherit = %w{/usr /sbin /lib}
184
156
  property.should = %w{/usr /sbin}
185
157
 
186
158
  text = "remove inherit-pkg-dir dir=/lib"
@@ -188,20 +160,42 @@ end"
188
160
  assert_equal(text, property.configtext,
189
161
  "Got incorrect config text")
190
162
  end
163
+ end
164
+
165
+ class TestZoneAsRoot < TestZone
166
+ confine "Not running Zone creation tests" => Puppet.features.root?
167
+ confine "Zones are only functional on Solaris" => (Facter["operatingsystem"].value == "Solaris")
168
+
169
+ def teardown
170
+ current = %x{zoneadm list -cp}.split("\n").inject({}) { |h, line|
171
+ ary = line.split(":")
172
+ h[ary[1]] = ary[2]
173
+ h
174
+ }
175
+
176
+ Puppet::Type.type(:zone).clear
177
+
178
+ # Get rid of any lingering zones
179
+ @@zones.each do |zone|
180
+ next unless current.include? zone
181
+
182
+ obj = Puppet::Type.type(:zone).create(:name => zone)
183
+ obj[:ensure] = :absent
184
+ assert_apply(obj)
185
+ end
191
186
 
192
- if Puppet::Util::SUIDManager.uid == 0
187
+ # We can't delete the temp files until the zones are stopped and removed.
188
+ super
189
+ end
193
190
  # Make sure our ensure process actually works.
194
191
  def test_ensure_sync
195
192
  zone = mkzone("ensuretesting")
196
193
 
197
194
  zone[:ensure] = :configured
198
195
 
199
- zone.retrieve
200
196
  assert_apply(zone)
201
197
 
202
- zone.retrieve
203
-
204
- assert(zone.insync?, "Zone is not insync")
198
+ assert(zone.insync?(zone.retrieve), "Zone is not insync")
205
199
  end
206
200
 
207
201
  def test_getconfig
@@ -242,25 +236,27 @@ end
242
236
 
243
237
  assert_equal(0, $?, "Did not successfully create zone")
244
238
 
245
- #@@zones << "configtesting"
246
-
247
239
  hash = nil
248
240
  assert_nothing_raised {
249
241
  hash = zone.provider.send(:getconfig)
250
242
  }
251
243
 
252
- # Now set the configuration
253
- assert_nothing_raised { zone.send(:config2status, hash) }
244
+ zone[:check] = [:inherit, :autoboot]
245
+
246
+ values = nil
247
+ assert_nothing_raised("Could not retrieve zone values") do
248
+ values = zone.retrieve.inject({}) { |result, newvals| result[newvals[0].name] = newvals[1]; result }
249
+ end
254
250
 
255
251
  # And make sure it gets set correctly.
256
252
  assert_equal(%w{/sbin /usr /opt/csw /lib /platform}.sort,
257
- zone.is(:inherit).sort, "Inherited dirs did not get collected correctly."
253
+ values[:inherit].sort, "Inherited dirs did not get collected correctly."
258
254
  )
259
255
 
260
- assert_equal(["#{interface}:#{ip}"], zone.is(:ip),
256
+ assert_equal(["#{interface}:#{ip}"], values[:ip],
261
257
  "IP addresses did not get collected correctly.")
262
258
 
263
- assert_equal(:true, zone.is(:autoboot),
259
+ assert_equal(:true, values[:autoboot],
264
260
  "Autoboot did not get collected correctly.")
265
261
  end
266
262
 
@@ -274,12 +270,9 @@ end
274
270
 
275
271
  zone[:ensure] = :configured
276
272
 
277
- zone.retrieve
278
273
  assert_apply(zone)
279
274
 
280
- zone.retrieve
281
-
282
- assert(zone.insync?, "Zone is not insync")
275
+ assert(zone.insync?(zone.retrieve), "Zone is not insync")
283
276
 
284
277
  # Now add a new directory to inherit
285
278
  assert_nothing_raised {
@@ -287,9 +280,7 @@ end
287
280
  }
288
281
  assert_apply(zone)
289
282
 
290
- zone.retrieve
291
-
292
- assert(zone.insync?, "Zone is not insync")
283
+ assert(zone.insync?(zone.retrieve), "Zone is not insync")
293
284
 
294
285
  assert(%x{/usr/sbin/zonecfg -z #{zone[:name]} info} =~ /dir: \/sbin/,
295
286
  "sbin was not added")
@@ -300,9 +291,7 @@ end
300
291
  }
301
292
  assert_apply(zone)
302
293
 
303
- zone.retrieve
304
-
305
- assert(zone.insync?, "Zone is not insync")
294
+ assert(zone.insync?(zone.retrieve), "Zone is not insync")
306
295
 
307
296
  assert(%x{/usr/sbin/zonecfg -z #{zone[:name]} info} !~ /dir: \/sbin/,
308
297
  "sbin was not removed")
@@ -311,18 +300,15 @@ end
311
300
  # that the interface exists.
312
301
  zone[:ip] = "hme0:192.168.0.1"
313
302
 
314
- zone.retrieve
315
- assert(! zone.insync?, "Zone is marked as in sync")
303
+ assert(! zone.insync?(zone.retrieve), "Zone is marked as in sync")
316
304
 
317
305
  assert_apply(zone)
318
- zone.retrieve
319
- assert(zone.insync?, "Zone is not in sync")
306
+ assert(zone.insync?(zone.retrieve), "Zone is not in sync")
320
307
  assert(%x{/usr/sbin/zonecfg -z #{zone[:name]} info} =~ /192.168.0.1/,
321
308
  "ip was not added")
322
309
  zone[:ip] = ["hme1:192.168.0.2", "hme0:192.168.0.1"]
323
310
  assert_apply(zone)
324
- zone.retrieve
325
- assert(zone.insync?, "Zone is not in sync")
311
+ assert(zone.insync?(zone.retrieve), "Zone is not in sync")
326
312
  assert(%x{/usr/sbin/zonecfg -z #{zone[:name]} info} =~ /192.168.0.2/,
327
313
  "ip was not added")
328
314
  zone[:ip] = ["hme1:192.168.0.2"]
@@ -348,22 +334,20 @@ end
348
334
 
349
335
  zone[:ensure] = :configured
350
336
 
351
- assert(! zone.insync?, "Zone is incorrectly in sync")
337
+ assert(! zone.insync?(zone.retrieve), "Zone is incorrectly in sync")
352
338
 
353
339
  assert_apply(zone)
354
340
 
355
- assert_nothing_raised {
356
- zone.retrieve
357
- }
358
- assert(zone.insync?, "Zone is incorrectly out of sync")
341
+ assert(zone.insync?(zone.retrieve), "Zone is incorrectly out of sync")
359
342
 
360
343
  zone[:ensure] = :absent
361
344
 
362
345
  assert_apply(zone)
363
346
 
364
- zone.retrieve
347
+ currentvalues = zone.retrieve
365
348
 
366
- assert_equal(:absent, zone.is(:ensure), "Zone is not absent")
349
+ assert_equal(:absent, currentvalues[zone.property(:ensure)],
350
+ "Zone is not absent")
367
351
  end
368
352
 
369
353
  # Just go through each method linearly and make sure it works.
@@ -384,16 +368,18 @@ end
384
368
  [:unconfigure, :absent]
385
369
  ].each do |method, property|
386
370
  Puppet.info "Testing %s" % method
371
+ current_values = nil
387
372
  assert_nothing_raised {
388
- zone.retrieve
373
+ current_values = zone.retrieve
389
374
  }
390
375
  assert_nothing_raised {
391
376
  zone.provider.send(method)
392
377
  }
378
+ current_values = nil
393
379
  assert_nothing_raised {
394
- zone.retrieve
380
+ current_values = zone.retrieve
395
381
  }
396
- assert_equal(property, zone.is(:ensure),
382
+ assert_equal(property, current_values[zone.property(:ensure)],
397
383
  "Method %s did not correctly set property %s" %
398
384
  [method, property])
399
385
  end
@@ -416,22 +402,20 @@ end
416
402
  assert_nothing_raised {
417
403
  zone[:ensure] = value
418
404
  }
419
- assert(! zone.insync?, "Zone is incorrectly in sync")
405
+ assert(! zone.insync?(zone.retrieve), "Zone is incorrectly in sync")
420
406
 
421
407
  assert_apply(zone)
422
408
 
423
409
  assert_nothing_raised {
424
- zone.retrieve
410
+ assert(zone.insync?(zone.retrieve), "Zone is incorrectly out of sync")
425
411
  }
426
- assert(zone.insync?, "Zone is incorrectly out of sync")
427
412
  end
428
413
 
429
- zone.retrieve
414
+ currentvalues = zone.retrieve
430
415
 
431
- assert_equal(:absent, zone.is(:ensure), "Zone is not absent")
432
- end
433
- end
416
+ assert_equal(:absent, currentvalues[zone.property(:ensure)],
417
+ "Zone is not absent")
434
418
  end
435
419
  end
436
420
 
437
- # $Id: zone.rb 2178 2007-02-07 23:56:59Z luke $
421
+ # $Id: zone.rb 2576 2007-06-14 03:39:00Z luke $
@@ -74,7 +74,7 @@ TestAutoload.newthing(:#{name.to_s})
74
74
  # Now try to actually load it.
75
75
  assert_nothing_raised {
76
76
  assert_equal(true, loader.load(:mything),
77
- "got incorrect return on failed load")
77
+ "got incorrect return on load")
78
78
  }
79
79
 
80
80
  assert(loader.loaded?(:mything), "Not considered loaded")
@@ -103,28 +103,13 @@ TestAutoload.newthing(:#{name.to_s})
103
103
 
104
104
  # Make sure that autoload dynamically modifies $: with the libdir as
105
105
  # appropriate.
106
- def test_autoload_uses_libdir
106
+ def test_searchpath
107
107
  dir = Puppet[:libdir]
108
- unless FileTest.directory?(dir)
109
- Dir.mkdir(dir)
110
- end
111
-
112
- loader = File.join(dir, "test")
113
- Dir.mkdir(loader)
114
- name = "funtest"
115
- file = File.join(loader, "funtest.rb")
116
- File.open(file, "w") do |f|
117
- f.puts "$loaded = true"
118
- end
119
108
 
120
- auto = Puppet::Util::Autoload.new(self, "test")
109
+ loader = Puppet::Util::Autoload.new(self, "testing")
121
110
 
122
- # Now make sure autoloading modifies $: as necessary
123
- assert(! $:.include?(dir), "search path already includes libdir")
124
-
125
- assert_nothing_raised do
126
- assert(auto.load("funtest"), "did not successfully load funtest")
127
- end
128
- assert($:.include?(dir), "libdir did not get added to search path")
111
+ assert(loader.send(:searchpath).include?(dir), "searchpath does not include the libdir")
129
112
  end
130
113
  end
114
+
115
+ # $Id: autoload.rb 2518 2007-05-16 00:00:47Z luke $
@@ -2,6 +2,7 @@
2
2
 
3
3
  $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
4
 
5
+ require 'mocha'
5
6
  require 'puppet'
6
7
  require 'puppet/util/config'
7
8
  require 'puppettest'
@@ -196,7 +197,65 @@ class TestConfig < Test::Unit::TestCase
196
197
  assert_equal("not default", @config[:yayness])
197
198
  end
198
199
 
199
- def test_parse
200
+ def test_parse_file
201
+ text = %{
202
+ one = this is a test
203
+ two = another test
204
+ owner = root
205
+ group = root
206
+ yay = /a/path
207
+
208
+ [main]
209
+ four = five
210
+ six = seven
211
+
212
+ [section1]
213
+ attr = value
214
+ owner = puppet
215
+ group = puppet
216
+ attrdir = /some/dir
217
+ attr3 = $attrdir/other
218
+ }
219
+
220
+ file = tempfile()
221
+ File.open(file, "w") { |f| f.puts text }
222
+
223
+ @config.expects(:settimer)
224
+
225
+ result = nil
226
+ assert_nothing_raised {
227
+ result = @config.send(:parse_file, file)
228
+ }
229
+
230
+ main = result[:main]
231
+ assert(main, "Did not get section for main")
232
+ {
233
+ :one => "this is a test",
234
+ :two => "another test",
235
+ :owner => "root",
236
+ :group => "root",
237
+ :yay => "/a/path",
238
+ :four => "five",
239
+ :six => "seven"
240
+ }.each do |param, value|
241
+ assert_equal(value, main[param], "Param %s was not set correctly in main" % param)
242
+ end
243
+
244
+ section1 = result[:section1]
245
+ assert(section1, "Did not get section1")
246
+
247
+ {
248
+ :attr => "value",
249
+ :owner => "puppet",
250
+ :group => "puppet",
251
+ :attrdir => "/some/dir",
252
+ :attr3 => "$attrdir/other"
253
+ }.each do |param, value|
254
+ assert_equal(value, section1[param], "Param %s was not set correctly in section1" % param)
255
+ end
256
+ end
257
+
258
+ def test_old_parse
200
259
  text = %{
201
260
  one = this is a test
202
261
  two = another test
@@ -233,7 +292,7 @@ yay = /a/path
233
292
  }
234
293
 
235
294
  assert_nothing_raised {
236
- @config.parse(file)
295
+ @config.old_parse(file)
237
296
  }
238
297
 
239
298
  assert_equal("value", @config[:attr])
@@ -267,6 +326,137 @@ yay = /a/path
267
326
  check_to_transportable(@config)
268
327
  end
269
328
 
329
+ def test_parse
330
+ result = {
331
+ :main => {:main => "main", :bad => "invalid"},
332
+ :puppet => {:other => "puppet"},
333
+ :puppetd => {:other => "puppetd"}
334
+ }
335
+ # Set our defaults, so they're valid. Don't define 'bad', since we want to test for failures.
336
+ @config.setdefaults(:main,
337
+ :main => ["whatever", "a"],
338
+ :other => ["a", "b"],
339
+ :name => ["puppet", "b"] # our default name
340
+ )
341
+ @config.expects(:parse_file).returns(result).times(2)
342
+
343
+ # First do it with our name being 'puppet'
344
+ assert_nothing_raised("Could not handle parse results") do
345
+ @config.parse(tempfile)
346
+ end
347
+
348
+ assert_logged(:warning, /unknown configuration parameter bad/, "Did not log invalid config param")
349
+
350
+ assert_equal("main", @config[:main], "Did not get main value")
351
+ assert_equal("puppet", @config[:other], "Did not get name value")
352
+
353
+ # Now switch names and make sure the parsing switches, too.
354
+ @config.clear
355
+ @config[:name] = :puppetd
356
+ assert_nothing_raised("Could not handle parse results") do
357
+ @config.parse(tempfile)
358
+ end
359
+ assert_logged(:warning, /unknown configuration parameter bad/, "Did not log invalid config param")
360
+
361
+ assert_equal("main", @config[:main], "Did not get main value")
362
+ assert_equal("puppetd", @config[:other], "Did not get name value")
363
+ end
364
+
365
+ # Make sure we can extract file options correctly.
366
+ def test_parsing_file_options
367
+ @config.setdefaults(:whev,
368
+ :file => {
369
+ :desc => "whev",
370
+ :default => "/default",
371
+ :owner => "me",
372
+ :group => "me",
373
+ :mode => "755"
374
+ }
375
+ )
376
+
377
+ file = tempfile
378
+
379
+ {
380
+ :pass => {
381
+ " {owner = you}" => {:owner => "you"},
382
+ " {owner = you, group = you}" => {:owner => "you", :group => "you"},
383
+ " {owner = you, group = you, mode = 755}" => {:owner => "you", :group => "you", :mode => "755"},
384
+ " { owner = you, group = you } " => {:owner => "you", :group => "you"},
385
+ "{owner=you,group=you} " => {:owner => "you", :group => "you"},
386
+ "{owner=you,} " => {:owner => "you"}
387
+ },
388
+ :fail => [
389
+ %{{owner = you group = you}},
390
+ %{{owner => you, group => you}},
391
+ %{{user => you}},
392
+ %{{random => you}},
393
+ %{{mode => you}}, # make sure modes are numbers
394
+ %{{owner => you}}
395
+ ]
396
+ }.each do |type, list|
397
+ list.each do |value|
398
+ if type == :pass
399
+ value, should = value[0], value[1]
400
+ end
401
+ # Write our file out
402
+ File.open(file, "w") do |f|
403
+ f.puts %{[main]\nfile = /other%s} % value
404
+ end
405
+
406
+ if type == :fail
407
+ assert_raise(Puppet::Error, "Did not fail on %s" % value.inspect) do
408
+ @config.send(:parse_file, file)
409
+ end
410
+ else
411
+ result = nil
412
+ assert_nothing_raised("Failed to parse %s" % value.inspect) do
413
+ result = @config.send(:parse_file, file)
414
+ end
415
+ assert_equal(should, result[:main][:_meta][:file], "Got incorrect return for %s" % value.inspect)
416
+ end
417
+ end
418
+ end
419
+ end
420
+
421
+ # Make sure file options returned from parse_file are handled correctly.
422
+ def test_parsed_file_options
423
+ @config.setdefaults(:whev,
424
+ :file => {
425
+ :desc => "whev",
426
+ :default => "/default",
427
+ :owner => "me",
428
+ :group => "me",
429
+ :mode => "755"
430
+ }
431
+ )
432
+
433
+ result = {
434
+ :main => {
435
+ :file => "/other",
436
+ :_meta => {
437
+ :file => {
438
+ :owner => "you",
439
+ :group => "you",
440
+ :mode => "644"
441
+ }
442
+ }
443
+ }
444
+ }
445
+
446
+ @config.expects(:parse_file).returns(result)
447
+
448
+ assert_nothing_raised("Could not handle file options") do
449
+ @config.parse("/whatever")
450
+ end
451
+
452
+ # Get the actual object, so we can verify metadata
453
+ file = @config.element(:file)
454
+
455
+ assert_equal("you", file.owner, "Did not pass on user")
456
+ assert_equal("you", file.group, "Did not pass on group")
457
+ assert_equal("644", file.mode, "Did not pass on mode")
458
+ end
459
+
270
460
  def test_arghandling
271
461
  c = mkconfig
272
462
 
@@ -517,7 +707,7 @@ yay = /a/path
517
707
  group = "yayness"
518
708
 
519
709
  File.open(cfile, "w") do |f|
520
- f.puts "[#{Puppet[:name]}]
710
+ f.puts "[main]
521
711
  group = #{group}
522
712
  "
523
713
  end
@@ -624,7 +814,7 @@ yay = /a/path
624
814
 
625
815
  File.open(file, "w") do |f|
626
816
  f.puts %{
627
- [mysection]
817
+ [main]
628
818
  booltest = true
629
819
  inttest = 27
630
820
  }
@@ -726,7 +916,7 @@ inttest = 27
726
916
  file = tempfile()
727
917
  # Set one parameter in the file
728
918
  File.open(file, "w") { |f|
729
- f.puts %{[mysection]\nfilechange = filevalue}
919
+ f.puts %{[main]\nfilechange = filevalue}
730
920
  }
731
921
  assert_nothing_raised {
732
922
  config.parse(file)
@@ -744,7 +934,7 @@ inttest = 27
744
934
 
745
935
  # Now rewrite the file
746
936
  File.open(file, "w") { |f|
747
- f.puts %{[mysection]\nfilechange = newvalue}
937
+ f.puts %{[main]\nfilechange = newvalue}
748
938
  }
749
939
 
750
940
  cfile = config.file
@@ -766,7 +956,7 @@ inttest = 27
766
956
  file = tempfile()
767
957
  # Set one parameter in the file
768
958
  File.open(file, "w") { |f|
769
- f.puts %{[mysection]\n
959
+ f.puts %{[main]\n
770
960
  singleq = 'one'
771
961
  doubleq = "one"
772
962
  none = one
@@ -793,7 +983,7 @@ inttest = 27
793
983
  file = tempfile()
794
984
  # Set one parameter in the file
795
985
  File.open(file, "w") { |f|
796
- f.puts %{[mysection]\n
986
+ f.puts %{[main]\n
797
987
  paramdir = #{origpath}
798
988
  }
799
989
  }
@@ -813,7 +1003,7 @@ inttest = 27
813
1003
  newpath = tempfile()
814
1004
 
815
1005
  File.open(file, "w") { |f|
816
- f.puts %{[mysection]\n
1006
+ f.puts %{[main]\n
817
1007
  paramdir = #{newpath}
818
1008
  }
819
1009
  }
@@ -941,7 +1131,7 @@ inttest = 27
941
1131
  config.setdefaults(:mysection, :one => ["yay", "yay"])
942
1132
  file = tempfile()
943
1133
  File.open(file, "w") { |f|
944
- f.puts %{[mysection]\n
1134
+ f.puts %{[main]\n
945
1135
  one = one
946
1136
  two = yay
947
1137
  }
@@ -977,96 +1167,6 @@ inttest = 27
977
1167
  assert_equal("oneval/twoval/oneval/twoval", @config[:three],
978
1168
  "Did not interpolate curlied variables")
979
1169
  end
980
-
981
- # #489
982
- def test_modes
983
- Puppet[:name] = "puppet"
984
- config = tempfile()
985
-
986
- check = Proc.new do |string, int|
987
- trans = @config.section_to_transportable(:puppet)
988
- ssldir = trans.find { |o| o.type == "file" }
989
- assert(ssldir, "could not find trans object")
990
-
991
- if ssldir[:mode].is_a?(Fixnum)
992
- assert_equal(int, ssldir[:mode], "mode not set correctly")
993
- else
994
- assert_equal(string, ssldir[:mode], "mode not set correctly")
995
- end
996
-
997
- obj = nil
998
- assert_nothing_raised { obj = ssldir.to_type }
999
-
1000
- assert(obj, "did not create object")
1001
- assert_equal(int, obj.should(:mode),
1002
- "did not pass mode correctly to file")
1003
-
1004
- obj.class.clear
1005
- end
1006
-
1007
- file = tempfile
1008
- @config.setdefaults(:puppet, :mode => ["644", "yay"])
1009
- @config.setdefaults(:puppet, :ssldir => {
1010
- :mode => 0644,
1011
- :desc => "yay",
1012
- :default => "/some/file"})
1013
-
1014
- # Convert it first using the number
1015
- check.call("644", 0644)
1016
-
1017
- File.open(config, "w") { |f| f.puts "[puppet]
1018
- mode = 750
1019
- ssldir = #{file}
1020
- "}
1021
-
1022
- @config.parse(config)
1023
-
1024
- assert_equal("750", @config[:mode],
1025
- "Did not parse mode correctly")
1026
-
1027
- check.call("750", 0750)
1028
- end
1029
-
1030
- def test_only_set_metas_when_valid
1031
- file = tempfile
1032
- config = tempfile
1033
- @config.setdefaults(Puppet[:name], :ssldir => {
1034
- :mode => 0644,
1035
- :group => "yayness",
1036
- :desc => "yay",
1037
- :default => "/some/file"})
1038
-
1039
- File.open(config, "w") { |f| f.puts "[#{Puppet[:name]}]
1040
- mode = 755
1041
- group = foo
1042
- ssldir = #{file}
1043
- "}
1044
-
1045
- assert_nothing_raised do
1046
- @config.parse(config)
1047
- end
1048
-
1049
- assert_raise(ArgumentError) do
1050
- @config[:mode]
1051
- end
1052
- assert_raise(ArgumentError) do
1053
- @config[:group]
1054
- end
1055
-
1056
- # Now make them valid params
1057
- @config.setdefaults(Puppet[:name], :group => ["blah", "yay"])
1058
- @config.setdefaults(Puppet[:name], :mode => ["750", "yay"])
1059
-
1060
- assert_nothing_raised do
1061
- @config.parse(config)
1062
- end
1063
-
1064
- assert_equal("foo", @config[:group],
1065
- "Did not store group when it is a valid config")
1066
- assert_equal("755", @config[:mode],
1067
- "Did not store mode when it is a valid config")
1068
-
1069
- end
1070
1170
  end
1071
1171
 
1072
- # $Id: config.rb 2273 2007-03-08 17:35:18Z luke $
1172
+ # $Id: config.rb 2464 2007-05-06 05:42:53Z luke $