puppet 0.9.2 → 0.13.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 (213) hide show
  1. data/CHANGELOG +58 -0
  2. data/README +21 -18
  3. data/Rakefile +176 -36
  4. data/bin/puppet +34 -48
  5. data/bin/puppetca +41 -28
  6. data/bin/puppetd +87 -65
  7. data/bin/puppetdoc +99 -23
  8. data/bin/puppetmasterd +72 -91
  9. data/conf/redhat/client.init +80 -0
  10. data/conf/redhat/client.sysconfig +11 -0
  11. data/conf/redhat/fileserver.conf +12 -0
  12. data/conf/redhat/puppet.spec +130 -0
  13. data/conf/redhat/server.init +89 -0
  14. data/conf/redhat/server.sysconfig +9 -0
  15. data/examples/code/allatonce +2 -2
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/classing +2 -2
  18. data/examples/code/components +2 -2
  19. data/examples/code/file.bl +5 -5
  20. data/examples/code/filedefaults +2 -2
  21. data/examples/code/fileparsing +1 -1
  22. data/examples/code/filerecursion +1 -1
  23. data/examples/code/functions +1 -1
  24. data/examples/code/groups +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/nodes +1 -1
  27. data/examples/code/one +1 -1
  28. data/examples/code/relationships +2 -2
  29. data/examples/code/simpletests +5 -5
  30. data/examples/code/snippets/argumentdefaults +2 -2
  31. data/examples/code/snippets/casestatement +16 -8
  32. data/examples/code/snippets/classheirarchy.pp +4 -4
  33. data/examples/code/snippets/classincludes.pp +4 -4
  34. data/examples/code/snippets/classpathtest +2 -2
  35. data/examples/code/snippets/componentmetaparams.pp +11 -0
  36. data/examples/code/snippets/dirchmod +5 -5
  37. data/examples/code/snippets/emptyclass.pp +9 -0
  38. data/examples/code/snippets/failmissingexecpath.pp +1 -1
  39. data/examples/code/snippets/falsevalues.pp +1 -1
  40. data/examples/code/snippets/filecreate +5 -5
  41. data/examples/code/snippets/implicititeration +5 -5
  42. data/examples/code/snippets/multipleinstances +4 -4
  43. data/examples/code/snippets/namevartest +3 -3
  44. data/examples/code/snippets/scopetest +1 -1
  45. data/examples/code/snippets/selectorvalues.pp +3 -3
  46. data/examples/code/snippets/simpledefaults +2 -2
  47. data/examples/code/snippets/simpleselector +5 -5
  48. data/examples/code/snippets/singleary.pp +19 -0
  49. data/examples/root/etc/init.d/sleeper +3 -2
  50. data/ext/emacs/puppet-mode-init.el +6 -0
  51. data/ext/emacs/puppet-mode.el +189 -0
  52. data/ext/ldap/puppet.schema +17 -0
  53. data/ext/{module:puppet → module_puppet} +30 -31
  54. data/ext/vim/filetype.vim +9 -0
  55. data/ext/vim/puppet.vim +87 -0
  56. data/install.rb +63 -30
  57. data/lib/puppet.rb +216 -122
  58. data/lib/puppet/client.rb +51 -416
  59. data/lib/puppet/client/ca.rb +17 -0
  60. data/lib/puppet/client/dipper.rb +78 -0
  61. data/lib/puppet/client/file.rb +20 -0
  62. data/lib/puppet/client/log.rb +17 -0
  63. data/lib/puppet/client/master.rb +246 -0
  64. data/lib/puppet/client/proxy.rb +27 -0
  65. data/lib/puppet/client/status.rb +7 -0
  66. data/lib/puppet/config.rb +563 -13
  67. data/lib/puppet/daemon.rb +50 -22
  68. data/lib/puppet/element.rb +4 -4
  69. data/lib/puppet/event-loop.rb +1 -0
  70. data/lib/puppet/event-loop/better-definers.rb +367 -0
  71. data/lib/puppet/event-loop/event-loop.rb +355 -0
  72. data/lib/puppet/event-loop/signal-system.rb +220 -0
  73. data/lib/puppet/event.rb +9 -11
  74. data/lib/puppet/filetype.rb +195 -0
  75. data/lib/puppet/log.rb +35 -12
  76. data/lib/puppet/metric.rb +2 -2
  77. data/lib/puppet/networkclient.rb +145 -0
  78. data/lib/puppet/parameter.rb +335 -0
  79. data/lib/puppet/parser/ast.rb +42 -1453
  80. data/lib/puppet/parser/ast/astarray.rb +88 -0
  81. data/lib/puppet/parser/ast/branch.rb +47 -0
  82. data/lib/puppet/parser/ast/caseopt.rb +66 -0
  83. data/lib/puppet/parser/ast/casestatement.rb +78 -0
  84. data/lib/puppet/parser/ast/classdef.rb +78 -0
  85. data/lib/puppet/parser/ast/compdef.rb +111 -0
  86. data/lib/puppet/parser/ast/component.rb +105 -0
  87. data/lib/puppet/parser/ast/hostclass.rb +82 -0
  88. data/lib/puppet/parser/ast/leaf.rb +86 -0
  89. data/lib/puppet/parser/ast/node.rb +103 -0
  90. data/lib/puppet/parser/ast/nodedef.rb +68 -0
  91. data/lib/puppet/parser/ast/objectdef.rb +336 -0
  92. data/lib/puppet/parser/ast/objectparam.rb +30 -0
  93. data/lib/puppet/parser/ast/objectref.rb +76 -0
  94. data/lib/puppet/parser/ast/selector.rb +60 -0
  95. data/lib/puppet/parser/ast/typedefaults.rb +45 -0
  96. data/lib/puppet/parser/ast/vardef.rb +44 -0
  97. data/lib/puppet/parser/interpreter.rb +31 -14
  98. data/lib/puppet/parser/lexer.rb +2 -4
  99. data/lib/puppet/parser/parser.rb +332 -242
  100. data/lib/puppet/parser/scope.rb +55 -38
  101. data/lib/puppet/server.rb +43 -44
  102. data/lib/puppet/server/authstore.rb +3 -6
  103. data/lib/puppet/server/ca.rb +5 -2
  104. data/lib/puppet/server/filebucket.rb +2 -4
  105. data/lib/puppet/server/fileserver.rb +28 -12
  106. data/lib/puppet/server/logger.rb +15 -4
  107. data/lib/puppet/server/master.rb +62 -7
  108. data/lib/puppet/sslcertificates.rb +41 -607
  109. data/lib/puppet/sslcertificates/ca.rb +291 -0
  110. data/lib/puppet/sslcertificates/certificate.rb +283 -0
  111. data/lib/puppet/statechange.rb +6 -1
  112. data/lib/puppet/storage.rb +67 -56
  113. data/lib/puppet/transaction.rb +25 -9
  114. data/lib/puppet/transportable.rb +102 -22
  115. data/lib/puppet/type.rb +1096 -315
  116. data/lib/puppet/type/component.rb +30 -21
  117. data/lib/puppet/type/cron.rb +409 -448
  118. data/lib/puppet/type/exec.rb +234 -174
  119. data/lib/puppet/type/group.rb +65 -82
  120. data/lib/puppet/type/nameservice.rb +247 -3
  121. data/lib/puppet/type/nameservice/netinfo.rb +29 -40
  122. data/lib/puppet/type/nameservice/objectadd.rb +52 -66
  123. data/lib/puppet/type/nameservice/posix.rb +6 -194
  124. data/lib/puppet/type/package.rb +447 -295
  125. data/lib/puppet/type/package/apt.rb +51 -50
  126. data/lib/puppet/type/package/bsd.rb +82 -0
  127. data/lib/puppet/type/package/dpkg.rb +85 -88
  128. data/lib/puppet/type/package/rpm.rb +67 -63
  129. data/lib/puppet/type/package/sun.rb +119 -98
  130. data/lib/puppet/type/package/yum.rb +41 -37
  131. data/lib/puppet/type/parsedtype.rb +295 -0
  132. data/lib/puppet/type/parsedtype/host.rb +143 -0
  133. data/lib/puppet/type/parsedtype/port.rb +232 -0
  134. data/lib/puppet/type/parsedtype/sshkey.rb +129 -0
  135. data/lib/puppet/type/pfile.rb +484 -460
  136. data/lib/puppet/type/pfile/checksum.rb +237 -181
  137. data/lib/puppet/type/pfile/content.rb +67 -0
  138. data/lib/puppet/type/pfile/ensure.rb +212 -0
  139. data/lib/puppet/type/pfile/group.rb +106 -105
  140. data/lib/puppet/type/pfile/mode.rb +98 -101
  141. data/lib/puppet/type/pfile/source.rb +228 -209
  142. data/lib/puppet/type/pfile/type.rb +18 -21
  143. data/lib/puppet/type/pfile/uid.rb +127 -130
  144. data/lib/puppet/type/pfilebucket.rb +68 -63
  145. data/lib/puppet/type/schedule.rb +341 -0
  146. data/lib/puppet/type/service.rb +351 -255
  147. data/lib/puppet/type/service/base.rb +9 -14
  148. data/lib/puppet/type/service/debian.rb +32 -38
  149. data/lib/puppet/type/service/init.rb +130 -130
  150. data/lib/puppet/type/service/smf.rb +48 -20
  151. data/lib/puppet/type/state.rb +229 -16
  152. data/lib/puppet/type/symlink.rb +51 -63
  153. data/lib/puppet/type/tidy.rb +105 -102
  154. data/lib/puppet/type/user.rb +118 -180
  155. data/lib/puppet/util.rb +100 -6
  156. data/test/certmgr/certmgr.rb +0 -1
  157. data/test/client/client.rb +4 -4
  158. data/test/executables/puppetbin.rb +7 -14
  159. data/test/executables/puppetca.rb +18 -24
  160. data/test/executables/puppetd.rb +7 -16
  161. data/test/executables/puppetmasterd.rb +7 -9
  162. data/test/executables/puppetmodule.rb +11 -16
  163. data/test/language/ast.rb +11 -7
  164. data/test/language/interpreter.rb +1 -1
  165. data/test/language/scope.rb +2 -0
  166. data/test/language/snippets.rb +30 -5
  167. data/test/language/transportable.rb +77 -0
  168. data/test/other/config.rb +316 -0
  169. data/test/other/events.rb +22 -21
  170. data/test/other/log.rb +14 -14
  171. data/test/other/metrics.rb +4 -8
  172. data/test/other/overrides.rb +5 -5
  173. data/test/other/relationships.rb +4 -2
  174. data/test/other/storage.rb +64 -3
  175. data/test/other/transactions.rb +20 -20
  176. data/test/parser/parser.rb +7 -4
  177. data/test/puppet/conffiles.rb +12 -12
  178. data/test/puppet/defaults.rb +13 -11
  179. data/test/puppet/utiltest.rb +14 -11
  180. data/test/puppettest.rb +156 -48
  181. data/test/server/bucket.rb +2 -2
  182. data/test/server/fileserver.rb +6 -6
  183. data/test/server/logger.rb +19 -11
  184. data/test/server/master.rb +33 -4
  185. data/test/server/server.rb +2 -7
  186. data/test/types/basic.rb +5 -7
  187. data/test/types/component.rb +22 -18
  188. data/test/types/cron.rb +111 -44
  189. data/test/types/exec.rb +116 -59
  190. data/test/types/file.rb +262 -137
  191. data/test/types/filebucket.rb +13 -15
  192. data/test/types/fileignoresource.rb +12 -16
  193. data/test/types/filesources.rb +73 -48
  194. data/test/types/filetype.rb +13 -15
  195. data/test/types/group.rb +15 -13
  196. data/test/types/host.rb +146 -0
  197. data/test/types/package.rb +74 -63
  198. data/test/types/port.rb +139 -0
  199. data/test/types/query.rb +8 -8
  200. data/test/types/schedule.rb +335 -0
  201. data/test/types/service.rb +137 -21
  202. data/test/types/sshkey.rb +140 -0
  203. data/test/types/symlink.rb +3 -5
  204. data/test/types/tidy.rb +5 -14
  205. data/test/types/type.rb +67 -11
  206. data/test/types/user.rb +25 -23
  207. metadata +186 -122
  208. data/lib/puppet/type/pfile/create.rb +0 -108
  209. data/lib/puppet/type/pprocess.rb +0 -97
  210. data/lib/puppet/type/typegen.rb +0 -149
  211. data/lib/puppet/type/typegen/filerecord.rb +0 -243
  212. data/lib/puppet/type/typegen/filetype.rb +0 -316
  213. data/test/other/state.rb +0 -106
@@ -5,21 +5,18 @@ if __FILE__ == $0
5
5
  end
6
6
 
7
7
  require 'puppet'
8
- require 'puppet/type/typegen/filetype'
9
- require 'puppet/type/typegen/filerecord'
8
+ #require 'puppet/type/typegen/filetype'
9
+ #require 'puppet/type/typegen/filerecord'
10
10
  require 'test/unit'
11
11
 
12
- # $Id: filetype.rb 724 2005-10-22 22:27:20Z luke $
13
-
14
12
  #class TestFileType < Test::Unit::TestCase
15
13
  class TestFileType
16
14
  def disabled_setup
17
- Puppet[:loglevel] = :debug if __FILE__ == $0
18
15
 
19
- @passwdtype = Puppet::Type::FileType["passwd"]
16
+ @passwdtype = Puppet.type(:filetype)["passwd"]
20
17
  if @passwdtype.nil?
21
18
  assert_nothing_raised() {
22
- @passwdtype = Puppet::Type::FileType.createtype(
19
+ @passwdtype = Puppet.type(:filetype).createtype(
23
20
  :name => "passwd"
24
21
  )
25
22
  @passwdtype.addrecord(
@@ -30,10 +27,10 @@ class TestFileType
30
27
  }
31
28
  end
32
29
 
33
- @syslogtype = Puppet::Type::FileType["syslog"]
30
+ @syslogtype = Puppet.type(:filetype)["syslog"]
34
31
  if @syslogtype.nil?
35
32
  assert_nothing_raised() {
36
- @syslogtype = Puppet::Type::FileType.createtype(
33
+ @syslogtype = Puppet.type(:filetype).createtype(
37
34
  :escapednewlines => true,
38
35
  :name => "syslog"
39
36
  )
@@ -89,9 +86,10 @@ class TestFileType
89
86
  def disabled_test_passwd2_change
90
87
  file = nil
91
88
  type = nil
92
- Kernel.system("cp /etc/passwd /tmp/oparsepasswd")
89
+ newfile = tempfile()
90
+ Kernel.system("cp /etc/passwd #{newfile}")
93
91
  assert_nothing_raised() {
94
- file = @passwdtype.new("/tmp/oparsepasswd")
92
+ file = @passwdtype.new(newfile)
95
93
  }
96
94
  assert_nothing_raised() {
97
95
  file.retrieve
@@ -114,7 +112,7 @@ class TestFileType
114
112
  assert(!file.insync?)
115
113
 
116
114
  assert_nothing_raised() {
117
- file.sync
115
+ file.evaluate
118
116
  }
119
117
 
120
118
  assert(file.insync?)
@@ -126,12 +124,10 @@ class TestFileType
126
124
  assert(!file.insync?)
127
125
 
128
126
  assert_nothing_raised() {
129
- file.sync
127
+ file.evaluate
130
128
  }
131
129
 
132
130
  assert(file.insync?)
133
-
134
- Kernel.system("rm /tmp/oparsepasswd")
135
131
  end
136
132
 
137
133
  def disabled_test_syslog_nochange
@@ -160,3 +156,5 @@ class TestFileType
160
156
 
161
157
  end
162
158
  end
159
+
160
+ # $Id: filetype.rb 873 2006-02-07 23:12:33Z luke $
@@ -4,7 +4,7 @@ if __FILE__ == $0
4
4
  $puppetbase = "../../../../language/trunk"
5
5
  end
6
6
 
7
- # $Id: group.rb 742 2005-11-16 17:12:11Z luke $
7
+ # $Id: group.rb 831 2006-01-16 20:01:20Z luke $
8
8
 
9
9
  require 'etc'
10
10
  require 'puppet/type'
@@ -19,7 +19,7 @@ class TestGroup < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def teardown
22
- Puppet::Type::Group.clear
22
+ Puppet.type(:group).clear
23
23
  @@tmpgroups.each { |group|
24
24
  unless missing?(group)
25
25
  remove(group)
@@ -45,6 +45,8 @@ class TestGroup < Test::Unit::TestCase
45
45
  def gid(name)
46
46
  %x{nireport / /groups name gid}.split("\n").each { |line|
47
47
  group, id = line.chomp.split(/\s+/)
48
+ assert(id =~ /^-?\d+$/, "Group id %s for %s is not a number" %
49
+ [id, group])
48
50
  if group == name
49
51
  return Integer(id)
50
52
  end
@@ -99,7 +101,7 @@ class TestGroup < Test::Unit::TestCase
99
101
 
100
102
  group[:gid] = old
101
103
 
102
- trans = assert_events(comp, [], "group")
104
+ trans = assert_events([], comp, "group")
103
105
 
104
106
  newgid = old
105
107
  while true
@@ -120,7 +122,7 @@ class TestGroup < Test::Unit::TestCase
120
122
  group[:gid] = newgid
121
123
  }
122
124
 
123
- trans = assert_events(comp, [:group_modified], "group")
125
+ trans = assert_events([:group_modified], comp, "group")
124
126
 
125
127
  curgid = nil
126
128
  assert_nothing_raised {
@@ -144,7 +146,7 @@ class TestGroup < Test::Unit::TestCase
144
146
 
145
147
  assert(obj, "Could not retrieve test group object")
146
148
 
147
- Puppet::Type::Group.validstates.each { |name, state|
149
+ Puppet.type(:group).validstates.each { |name, state|
148
150
  assert_nothing_raised {
149
151
  method = state.infomethod
150
152
  assert(method, "State %s has no infomethod" % name)
@@ -170,7 +172,7 @@ class TestGroup < Test::Unit::TestCase
170
172
  gobj = nil
171
173
  comp = nil
172
174
  assert_nothing_raised {
173
- gobj = Puppet::Type::Group.create(
175
+ gobj = Puppet.type(:group).create(
174
176
  :name => group,
175
177
  :check => [:gid]
176
178
  )
@@ -198,8 +200,8 @@ class TestGroup < Test::Unit::TestCase
198
200
  }
199
201
  user = nil
200
202
  assert_nothing_raised {
201
- checks = Puppet::Type::Group.validstates
202
- user = Puppet::Type::Group.create(
203
+ checks = Puppet.type(:group).validstates
204
+ user = Puppet.type(:group).create(
203
205
  :name => name,
204
206
  :check => checks
205
207
  )
@@ -218,7 +220,7 @@ class TestGroup < Test::Unit::TestCase
218
220
  comp = nil
219
221
  name = "pptestgr"
220
222
 
221
- os = Facter["operatingsystem"].value
223
+ #os = Facter["operatingsystem"].value
222
224
 
223
225
  #if os == "Darwin"
224
226
  # obj = nil
@@ -234,7 +236,7 @@ class TestGroup < Test::Unit::TestCase
234
236
  assert(missing?(name), "Group %s is still present" % name)
235
237
 
236
238
  assert_nothing_raised {
237
- gobj = Puppet::Type::Group.create(
239
+ gobj = Puppet.type(:group).create(
238
240
  :name => name
239
241
  )
240
242
 
@@ -242,7 +244,7 @@ class TestGroup < Test::Unit::TestCase
242
244
  }
243
245
 
244
246
  @@tmpgroups << name
245
- trans = assert_events(comp, [:group_created], "group")
247
+ trans = assert_events([:group_created], comp, "group")
246
248
 
247
249
  obj = nil
248
250
  assert_nothing_raised {
@@ -250,7 +252,7 @@ class TestGroup < Test::Unit::TestCase
250
252
  }
251
253
  assert(!missing?(name), "Group %s is missing" % name)
252
254
 
253
- tests = Puppet::Type::Group.validstates
255
+ tests = Puppet.type(:group).validstates
254
256
 
255
257
  gobj.retrieve
256
258
  tests.each { |test|
@@ -261,7 +263,7 @@ class TestGroup < Test::Unit::TestCase
261
263
  end
262
264
  }
263
265
 
264
- assert_rollback_events(trans, [:group_deleted], "group")
266
+ assert_rollback_events(trans, [:group_removed], "group")
265
267
 
266
268
  assert(missing?(name), "Group %s is still present" % name)
267
269
  end
@@ -0,0 +1,146 @@
1
+ # Test host job creation, modification, and destruction
2
+
3
+ if __FILE__ == $0
4
+ $:.unshift '..'
5
+ $:.unshift '../../lib'
6
+ $puppetbase = "../.."
7
+ end
8
+
9
+ require 'puppettest'
10
+ require 'puppet'
11
+ require 'test/unit'
12
+ require 'facter'
13
+
14
+ class TestHost < Test::Unit::TestCase
15
+ include TestPuppet
16
+ def setup
17
+ super
18
+ # god i'm lazy
19
+ @hosttype = Puppet.type(:host)
20
+ @oldhosttype = @hosttype.filetype
21
+ end
22
+
23
+ def teardown
24
+ @hosttype.filetype = @oldhosttype
25
+ Puppet.type(:file).clear
26
+ super
27
+ end
28
+
29
+ # Here we just create a fake host type that answers to all of the methods
30
+ # but does not modify our actual system.
31
+ def mkfaketype
32
+ @hosttype.filetype = Puppet::FileType.filetype(:ram)
33
+ end
34
+
35
+ def mkhost
36
+ host = nil
37
+ assert_nothing_raised {
38
+ host = Puppet.type(:host).create(
39
+ :name => "culain",
40
+ :ip => "192.168.0.3",
41
+ :alias => "puppet"
42
+ )
43
+ }
44
+
45
+ return host
46
+ end
47
+
48
+ def test_simplehost
49
+ mkfaketype
50
+ host = nil
51
+ assert_nothing_raised {
52
+ assert_nil(Puppet.type(:host).retrieve)
53
+ }
54
+
55
+ assert_nothing_raised {
56
+ host = Puppet.type(:host).create(
57
+ :name => "culain",
58
+ :ip => "192.168.0.3"
59
+ )
60
+ }
61
+
62
+ assert_nothing_raised {
63
+ Puppet.type(:host).store
64
+ }
65
+
66
+ assert_nothing_raised {
67
+ assert(
68
+ Puppet.type(:host).to_file.include?(
69
+ Puppet.type(:host).fileobj.read
70
+ ),
71
+ "File does not include all of our objects"
72
+ )
73
+ }
74
+ end
75
+
76
+ def test_hostsparse
77
+ fakedata("data/types/hosts").each { |file|
78
+ @hosttype.path = file
79
+ Puppet.info "Parsing %s" % file
80
+ assert_nothing_raised {
81
+ Puppet.type(:host).retrieve
82
+ }
83
+
84
+ @hosttype.clear
85
+ }
86
+ end
87
+
88
+ def test_moddinghost
89
+ mkfaketype
90
+ host = mkhost()
91
+
92
+ assert_events([:host_created], host)
93
+
94
+ host.retrieve
95
+
96
+ # This was a hard bug to track down.
97
+ assert_instance_of(String, host.is(:ip))
98
+
99
+ host[:alias] = %w{madstop kirby yayness}
100
+
101
+ assert_events([:host_changed], host)
102
+ end
103
+
104
+ def test_aliasisstate
105
+ assert_equal(:state, @hosttype.attrtype(:alias))
106
+ end
107
+
108
+ def test_multivalues
109
+ host = mkhost
110
+ assert_raise(Puppet::Error) {
111
+ host[:alias] = "puppetmasterd yayness"
112
+ }
113
+ end
114
+
115
+ def test_puppetalias
116
+ host = mkhost()
117
+
118
+ assert_nothing_raised {
119
+ host[:alias] = "testing"
120
+ }
121
+
122
+ same = host.class["testing"]
123
+ assert(same, "Could not retrieve by alias")
124
+ end
125
+
126
+ def test_removal
127
+ mkfaketype
128
+ host = mkhost()
129
+ assert_nothing_raised {
130
+ host[:ensure] = :present
131
+ }
132
+ assert_events([:host_created], host)
133
+
134
+ host.retrieve
135
+ assert(host.insync?)
136
+ assert_nothing_raised {
137
+ host[:ensure] = :absent
138
+ }
139
+
140
+ assert_events([:host_removed], host)
141
+ host.retrieve
142
+ assert_events([], host)
143
+ end
144
+ end
145
+
146
+ # $Id: host.rb 831 2006-01-16 20:01:20Z luke $
@@ -11,19 +11,19 @@ require 'facter'
11
11
 
12
12
  $platform = Facter["operatingsystem"].value
13
13
 
14
- unless Puppet::Type::Package.default
14
+ unless Puppet.type(:package).default
15
15
  puts "No default package type for %s; skipping package tests" % $platform
16
16
  else
17
17
 
18
18
  class TestPackageSource < Test::Unit::TestCase
19
19
  include TestPuppet
20
20
  def test_filesource
21
- system("touch /tmp/fakepackage")
21
+ path = tempfile()
22
+ system("touch %s" % path)
22
23
  assert_equal(
23
- "/tmp/fakepackage",
24
- Puppet::PackageSource.get("file:///tmp/fakepackage")
24
+ path,
25
+ Puppet::PackageSource.get("file://#{path}")
25
26
  )
26
- system("rm -f /tmp/fakepackage")
27
27
  end
28
28
  end
29
29
 
@@ -31,8 +31,8 @@ class TestPackages < Test::Unit::TestCase
31
31
  include FileTesting
32
32
  def setup
33
33
  super
34
- #@list = Puppet::Type::Package.getpkglist
35
- Puppet::Type::Package.clear
34
+ #@list = Puppet.type(:package).getpkglist
35
+ Puppet.type(:package).clear
36
36
  end
37
37
 
38
38
  # These are packages that we're sure will be installed
@@ -41,15 +41,9 @@ class TestPackages < Test::Unit::TestCase
41
41
  case $platform
42
42
  when "SunOS"
43
43
  pkgs = %w{SMCossh}
44
- when "Linux"
45
- case Facter["distro"].value
46
- when "Debian": pkgs = %w{ssh openssl}
47
- when "Fedora": pkgs = %w{openssh}
48
- #when "RedHat": type = :rpm
49
- else
50
- Puppet.notice "No test package for %s" % $platform
51
- return []
52
- end
44
+ when "Debian": pkgs = %w{ssh openssl}
45
+ when "Fedora": pkgs = %w{openssh}
46
+ when "OpenBSD": pkgs = %{vim}
53
47
  else
54
48
  Puppet.notice "No test package for %s" % $platform
55
49
  return []
@@ -58,30 +52,53 @@ class TestPackages < Test::Unit::TestCase
58
52
  return pkgs
59
53
  end
60
54
 
61
- def tstpkg
62
- case $platform
63
- #when "SunOS"
64
- # type = "sunpkg"
65
- when "Linux"
66
- case Facter["distro"].value
67
- when "Debian":
68
- return %w{zec}
69
- #when "RedHat": type = :rpm
70
- when "Fedora":
71
- return %w{wv}
55
+ def mkpkgs
56
+ tstpkgs().each { |pkg|
57
+ if pkg.is_a?(Array)
58
+ hash = {:name => pkg[0], :source => pkg[1]}
59
+ hash[:ensure] = "present"
60
+
61
+ unless File.exists?(hash[:source])
62
+ Puppet.info "No package file %s for %s; skipping some package tests" %
63
+ [hash[:source], Facter["operatingsystem"].value]
64
+ end
65
+ yield Puppet.type(:package).create(hash)
72
66
  else
73
- Puppet.notice "No test packags for %s" % $platform
74
- return nil
67
+ yield Puppet.type(:package).create(
68
+ :name => pkg, :ensure => "latest"
69
+ )
70
+ end
71
+ }
72
+ end
73
+
74
+ def tstpkgs
75
+ retval = []
76
+ case $platform
77
+ when "Solaris":
78
+ arch = Facter["hardwareisa"].value + Facter["operatingsystemrelease"].value
79
+ case arch
80
+ when "sparc5.8":
81
+ retval = [["SMCarc", "/usr/local/pkg/arc-5.21e-sol8-sparc-local"]]
82
+ when "i3865.8":
83
+ retval = [["SMCarc", "/usr/local/pkg/arc-5.21e-sol8-intel-local"]]
75
84
  end
85
+ when "OpenBSD":
86
+ retval = [["aalib", "ftp://ftp.usa.openbsd.org/pub/OpenBSD/3.8/packages/i386/aalib-1.2-no_x11.tgz"]]
87
+ when "Debian":
88
+ retval = %w{zec}
89
+ #when "RedHat": type = :rpm
90
+ when "Fedora":
91
+ retval = %w{wv}
76
92
  else
77
- Puppet.notice "No test packags for %s" % $platform
78
- return nil
93
+ Puppet.notice "No test packages for %s" % $platform
79
94
  end
95
+
96
+ return retval
80
97
  end
81
98
 
82
99
  def mkpkgcomp(pkg)
83
100
  assert_nothing_raised {
84
- pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
101
+ pkg = Puppet.type(:package).create(:name => pkg, :ensure => "present")
85
102
  }
86
103
  assert_nothing_raised {
87
104
  pkg.retrieve
@@ -96,7 +113,7 @@ class TestPackages < Test::Unit::TestCase
96
113
  installedpkgs().each { |pkg|
97
114
  obj = nil
98
115
  assert_nothing_raised {
99
- obj = Puppet::Type::Package.create(
116
+ obj = Puppet.type(:package).create(
100
117
  :name => pkg
101
118
  )
102
119
  }
@@ -107,14 +124,14 @@ class TestPackages < Test::Unit::TestCase
107
124
  obj.retrieve
108
125
  }
109
126
 
110
- assert(obj.is(:install), "Could not retrieve package version")
127
+ assert(obj[:version], "Could not retrieve package version")
111
128
  }
112
129
  end
113
130
 
114
131
  def test_nosuchpkg
115
132
  obj = nil
116
133
  assert_nothing_raised {
117
- obj = Puppet::Type::Package.create(
134
+ obj = Puppet.type(:package).create(
118
135
  :name => "thispackagedoesnotexist"
119
136
  )
120
137
  }
@@ -123,15 +140,12 @@ class TestPackages < Test::Unit::TestCase
123
140
  obj.retrieve
124
141
  }
125
142
 
126
- assert_equal(:notinstalled, obj.is(:install),
143
+ assert_equal(:absent, obj.is(:ensure),
127
144
  "Somehow retrieved unknown pkg's version")
128
145
  end
129
146
 
130
147
  def test_latestpkg
131
- pkgs = tstpkg || return
132
-
133
- pkgs.each { |name|
134
- pkg = Puppet::Type::Package.create(:name => name)
148
+ tstpkgs { |pkg|
135
149
  assert_nothing_raised {
136
150
  assert(pkg.latest, "Package did not return value for 'latest'")
137
151
  }
@@ -142,13 +156,9 @@ class TestPackages < Test::Unit::TestCase
142
156
  $stderr.puts "Run as root to perform package installation tests"
143
157
  else
144
158
  def test_installpkg
145
- pkgs = tstpkg || return
146
- pkgs.each { |pkg|
159
+ mkpkgs { |pkg|
147
160
  # we first set install to 'true', and make sure something gets
148
161
  # installed
149
- assert_nothing_raised {
150
- pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
151
- }
152
162
  assert_nothing_raised {
153
163
  pkg.retrieve
154
164
  }
@@ -160,46 +170,47 @@ class TestPackages < Test::Unit::TestCase
160
170
 
161
171
  comp = newcomp("package", pkg)
162
172
 
163
- assert_events(comp, [:package_installed], "package")
173
+ assert_events([:package_created], comp, "package")
164
174
 
165
175
  # then uninstall it
166
176
  assert_nothing_raised {
167
- pkg[:install] = false
177
+ pkg[:ensure] = "absent"
168
178
  }
169
179
 
170
180
 
171
181
  pkg.retrieve
172
182
 
173
- assert(! pkg.insync?, "Package is insync")
183
+ assert(! pkg.insync?, "Package is in sync")
174
184
 
175
- assert_events(comp, [:package_removed], "package")
185
+ assert_events([:package_removed], comp, "package")
176
186
 
177
187
  # and now set install to 'latest' and verify it installs
178
188
  # FIXME this isn't really a very good test -- we should install
179
189
  # a low version, and then upgrade using this. But, eh.
180
- assert_nothing_raised {
181
- pkg[:install] = "latest"
182
- }
190
+ if pkg.respond_to?(:latest)
191
+ assert_nothing_raised {
192
+ pkg[:ensure] = "latest"
193
+ }
183
194
 
184
- assert_events(comp, [:package_installed], "package")
195
+ assert_events([:package_created], comp, "package")
185
196
 
186
- pkg.retrieve
187
- assert(pkg.insync?, "After install, package is not insync")
188
-
189
- assert_nothing_raised {
190
- pkg[:install] = false
191
- }
197
+ pkg.retrieve
198
+ assert(pkg.insync?, "After install, package is not insync")
192
199
 
200
+ assert_nothing_raised {
201
+ pkg[:ensure] = "absent"
202
+ }
193
203
 
194
- pkg.retrieve
204
+ pkg.retrieve
195
205
 
196
- assert(! pkg.insync?, "Package is insync")
206
+ assert(! pkg.insync?, "Package is insync")
197
207
 
198
- assert_events(comp, [:package_removed], "package")
208
+ assert_events([:package_removed], comp, "package")
209
+ end
199
210
  }
200
211
  end
201
212
  end
202
213
  end
203
214
  end
204
215
 
205
- # $Id: package.rb 742 2005-11-16 17:12:11Z luke $
216
+ # $Id: package.rb 836 2006-01-17 22:11:51Z luke $