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.
- data/CHANGELOG +58 -0
- data/README +21 -18
- data/Rakefile +176 -36
- data/bin/puppet +34 -48
- data/bin/puppetca +41 -28
- data/bin/puppetd +87 -65
- data/bin/puppetdoc +99 -23
- data/bin/puppetmasterd +72 -91
- data/conf/redhat/client.init +80 -0
- data/conf/redhat/client.sysconfig +11 -0
- data/conf/redhat/fileserver.conf +12 -0
- data/conf/redhat/puppet.spec +130 -0
- data/conf/redhat/server.init +89 -0
- data/conf/redhat/server.sysconfig +9 -0
- data/examples/code/allatonce +2 -2
- data/examples/code/assignments +1 -1
- data/examples/code/classing +2 -2
- data/examples/code/components +2 -2
- data/examples/code/file.bl +5 -5
- data/examples/code/filedefaults +2 -2
- data/examples/code/fileparsing +1 -1
- data/examples/code/filerecursion +1 -1
- data/examples/code/functions +1 -1
- data/examples/code/groups +1 -1
- data/examples/code/importing +1 -1
- data/examples/code/nodes +1 -1
- data/examples/code/one +1 -1
- data/examples/code/relationships +2 -2
- data/examples/code/simpletests +5 -5
- data/examples/code/snippets/argumentdefaults +2 -2
- data/examples/code/snippets/casestatement +16 -8
- data/examples/code/snippets/classheirarchy.pp +4 -4
- data/examples/code/snippets/classincludes.pp +4 -4
- data/examples/code/snippets/classpathtest +2 -2
- data/examples/code/snippets/componentmetaparams.pp +11 -0
- data/examples/code/snippets/dirchmod +5 -5
- data/examples/code/snippets/emptyclass.pp +9 -0
- data/examples/code/snippets/failmissingexecpath.pp +1 -1
- data/examples/code/snippets/falsevalues.pp +1 -1
- data/examples/code/snippets/filecreate +5 -5
- data/examples/code/snippets/implicititeration +5 -5
- data/examples/code/snippets/multipleinstances +4 -4
- data/examples/code/snippets/namevartest +3 -3
- data/examples/code/snippets/scopetest +1 -1
- data/examples/code/snippets/selectorvalues.pp +3 -3
- data/examples/code/snippets/simpledefaults +2 -2
- data/examples/code/snippets/simpleselector +5 -5
- data/examples/code/snippets/singleary.pp +19 -0
- data/examples/root/etc/init.d/sleeper +3 -2
- data/ext/emacs/puppet-mode-init.el +6 -0
- data/ext/emacs/puppet-mode.el +189 -0
- data/ext/ldap/puppet.schema +17 -0
- data/ext/{module:puppet → module_puppet} +30 -31
- data/ext/vim/filetype.vim +9 -0
- data/ext/vim/puppet.vim +87 -0
- data/install.rb +63 -30
- data/lib/puppet.rb +216 -122
- data/lib/puppet/client.rb +51 -416
- data/lib/puppet/client/ca.rb +17 -0
- data/lib/puppet/client/dipper.rb +78 -0
- data/lib/puppet/client/file.rb +20 -0
- data/lib/puppet/client/log.rb +17 -0
- data/lib/puppet/client/master.rb +246 -0
- data/lib/puppet/client/proxy.rb +27 -0
- data/lib/puppet/client/status.rb +7 -0
- data/lib/puppet/config.rb +563 -13
- data/lib/puppet/daemon.rb +50 -22
- data/lib/puppet/element.rb +4 -4
- data/lib/puppet/event-loop.rb +1 -0
- data/lib/puppet/event-loop/better-definers.rb +367 -0
- data/lib/puppet/event-loop/event-loop.rb +355 -0
- data/lib/puppet/event-loop/signal-system.rb +220 -0
- data/lib/puppet/event.rb +9 -11
- data/lib/puppet/filetype.rb +195 -0
- data/lib/puppet/log.rb +35 -12
- data/lib/puppet/metric.rb +2 -2
- data/lib/puppet/networkclient.rb +145 -0
- data/lib/puppet/parameter.rb +335 -0
- data/lib/puppet/parser/ast.rb +42 -1453
- data/lib/puppet/parser/ast/astarray.rb +88 -0
- data/lib/puppet/parser/ast/branch.rb +47 -0
- data/lib/puppet/parser/ast/caseopt.rb +66 -0
- data/lib/puppet/parser/ast/casestatement.rb +78 -0
- data/lib/puppet/parser/ast/classdef.rb +78 -0
- data/lib/puppet/parser/ast/compdef.rb +111 -0
- data/lib/puppet/parser/ast/component.rb +105 -0
- data/lib/puppet/parser/ast/hostclass.rb +82 -0
- data/lib/puppet/parser/ast/leaf.rb +86 -0
- data/lib/puppet/parser/ast/node.rb +103 -0
- data/lib/puppet/parser/ast/nodedef.rb +68 -0
- data/lib/puppet/parser/ast/objectdef.rb +336 -0
- data/lib/puppet/parser/ast/objectparam.rb +30 -0
- data/lib/puppet/parser/ast/objectref.rb +76 -0
- data/lib/puppet/parser/ast/selector.rb +60 -0
- data/lib/puppet/parser/ast/typedefaults.rb +45 -0
- data/lib/puppet/parser/ast/vardef.rb +44 -0
- data/lib/puppet/parser/interpreter.rb +31 -14
- data/lib/puppet/parser/lexer.rb +2 -4
- data/lib/puppet/parser/parser.rb +332 -242
- data/lib/puppet/parser/scope.rb +55 -38
- data/lib/puppet/server.rb +43 -44
- data/lib/puppet/server/authstore.rb +3 -6
- data/lib/puppet/server/ca.rb +5 -2
- data/lib/puppet/server/filebucket.rb +2 -4
- data/lib/puppet/server/fileserver.rb +28 -12
- data/lib/puppet/server/logger.rb +15 -4
- data/lib/puppet/server/master.rb +62 -7
- data/lib/puppet/sslcertificates.rb +41 -607
- data/lib/puppet/sslcertificates/ca.rb +291 -0
- data/lib/puppet/sslcertificates/certificate.rb +283 -0
- data/lib/puppet/statechange.rb +6 -1
- data/lib/puppet/storage.rb +67 -56
- data/lib/puppet/transaction.rb +25 -9
- data/lib/puppet/transportable.rb +102 -22
- data/lib/puppet/type.rb +1096 -315
- data/lib/puppet/type/component.rb +30 -21
- data/lib/puppet/type/cron.rb +409 -448
- data/lib/puppet/type/exec.rb +234 -174
- data/lib/puppet/type/group.rb +65 -82
- data/lib/puppet/type/nameservice.rb +247 -3
- data/lib/puppet/type/nameservice/netinfo.rb +29 -40
- data/lib/puppet/type/nameservice/objectadd.rb +52 -66
- data/lib/puppet/type/nameservice/posix.rb +6 -194
- data/lib/puppet/type/package.rb +447 -295
- data/lib/puppet/type/package/apt.rb +51 -50
- data/lib/puppet/type/package/bsd.rb +82 -0
- data/lib/puppet/type/package/dpkg.rb +85 -88
- data/lib/puppet/type/package/rpm.rb +67 -63
- data/lib/puppet/type/package/sun.rb +119 -98
- data/lib/puppet/type/package/yum.rb +41 -37
- data/lib/puppet/type/parsedtype.rb +295 -0
- data/lib/puppet/type/parsedtype/host.rb +143 -0
- data/lib/puppet/type/parsedtype/port.rb +232 -0
- data/lib/puppet/type/parsedtype/sshkey.rb +129 -0
- data/lib/puppet/type/pfile.rb +484 -460
- data/lib/puppet/type/pfile/checksum.rb +237 -181
- data/lib/puppet/type/pfile/content.rb +67 -0
- data/lib/puppet/type/pfile/ensure.rb +212 -0
- data/lib/puppet/type/pfile/group.rb +106 -105
- data/lib/puppet/type/pfile/mode.rb +98 -101
- data/lib/puppet/type/pfile/source.rb +228 -209
- data/lib/puppet/type/pfile/type.rb +18 -21
- data/lib/puppet/type/pfile/uid.rb +127 -130
- data/lib/puppet/type/pfilebucket.rb +68 -63
- data/lib/puppet/type/schedule.rb +341 -0
- data/lib/puppet/type/service.rb +351 -255
- data/lib/puppet/type/service/base.rb +9 -14
- data/lib/puppet/type/service/debian.rb +32 -38
- data/lib/puppet/type/service/init.rb +130 -130
- data/lib/puppet/type/service/smf.rb +48 -20
- data/lib/puppet/type/state.rb +229 -16
- data/lib/puppet/type/symlink.rb +51 -63
- data/lib/puppet/type/tidy.rb +105 -102
- data/lib/puppet/type/user.rb +118 -180
- data/lib/puppet/util.rb +100 -6
- data/test/certmgr/certmgr.rb +0 -1
- data/test/client/client.rb +4 -4
- data/test/executables/puppetbin.rb +7 -14
- data/test/executables/puppetca.rb +18 -24
- data/test/executables/puppetd.rb +7 -16
- data/test/executables/puppetmasterd.rb +7 -9
- data/test/executables/puppetmodule.rb +11 -16
- data/test/language/ast.rb +11 -7
- data/test/language/interpreter.rb +1 -1
- data/test/language/scope.rb +2 -0
- data/test/language/snippets.rb +30 -5
- data/test/language/transportable.rb +77 -0
- data/test/other/config.rb +316 -0
- data/test/other/events.rb +22 -21
- data/test/other/log.rb +14 -14
- data/test/other/metrics.rb +4 -8
- data/test/other/overrides.rb +5 -5
- data/test/other/relationships.rb +4 -2
- data/test/other/storage.rb +64 -3
- data/test/other/transactions.rb +20 -20
- data/test/parser/parser.rb +7 -4
- data/test/puppet/conffiles.rb +12 -12
- data/test/puppet/defaults.rb +13 -11
- data/test/puppet/utiltest.rb +14 -11
- data/test/puppettest.rb +156 -48
- data/test/server/bucket.rb +2 -2
- data/test/server/fileserver.rb +6 -6
- data/test/server/logger.rb +19 -11
- data/test/server/master.rb +33 -4
- data/test/server/server.rb +2 -7
- data/test/types/basic.rb +5 -7
- data/test/types/component.rb +22 -18
- data/test/types/cron.rb +111 -44
- data/test/types/exec.rb +116 -59
- data/test/types/file.rb +262 -137
- data/test/types/filebucket.rb +13 -15
- data/test/types/fileignoresource.rb +12 -16
- data/test/types/filesources.rb +73 -48
- data/test/types/filetype.rb +13 -15
- data/test/types/group.rb +15 -13
- data/test/types/host.rb +146 -0
- data/test/types/package.rb +74 -63
- data/test/types/port.rb +139 -0
- data/test/types/query.rb +8 -8
- data/test/types/schedule.rb +335 -0
- data/test/types/service.rb +137 -21
- data/test/types/sshkey.rb +140 -0
- data/test/types/symlink.rb +3 -5
- data/test/types/tidy.rb +5 -14
- data/test/types/type.rb +67 -11
- data/test/types/user.rb +25 -23
- metadata +186 -122
- data/lib/puppet/type/pfile/create.rb +0 -108
- data/lib/puppet/type/pprocess.rb +0 -97
- data/lib/puppet/type/typegen.rb +0 -149
- data/lib/puppet/type/typegen/filerecord.rb +0 -243
- data/lib/puppet/type/typegen/filetype.rb +0 -316
- data/test/other/state.rb +0 -106
data/test/types/filetype.rb
CHANGED
@@ -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
|
16
|
+
@passwdtype = Puppet.type(:filetype)["passwd"]
|
20
17
|
if @passwdtype.nil?
|
21
18
|
assert_nothing_raised() {
|
22
|
-
@passwdtype = Puppet
|
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
|
30
|
+
@syslogtype = Puppet.type(:filetype)["syslog"]
|
34
31
|
if @syslogtype.nil?
|
35
32
|
assert_nothing_raised() {
|
36
|
-
@syslogtype = Puppet
|
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
|
-
|
89
|
+
newfile = tempfile()
|
90
|
+
Kernel.system("cp /etc/passwd #{newfile}")
|
93
91
|
assert_nothing_raised() {
|
94
|
-
file = @passwdtype.new(
|
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.
|
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.
|
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 $
|
data/test/types/group.rb
CHANGED
@@ -4,7 +4,7 @@ if __FILE__ == $0
|
|
4
4
|
$puppetbase = "../../../../language/trunk"
|
5
5
|
end
|
6
6
|
|
7
|
-
# $Id: group.rb
|
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
|
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(
|
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(
|
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
|
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
|
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
|
202
|
-
user = Puppet
|
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
|
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(
|
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
|
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, [:
|
266
|
+
assert_rollback_events(trans, [:group_removed], "group")
|
265
267
|
|
266
268
|
assert(missing?(name), "Group %s is still present" % name)
|
267
269
|
end
|
data/test/types/host.rb
ADDED
@@ -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 $
|
data/test/types/package.rb
CHANGED
@@ -11,19 +11,19 @@ require 'facter'
|
|
11
11
|
|
12
12
|
$platform = Facter["operatingsystem"].value
|
13
13
|
|
14
|
-
unless Puppet
|
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
|
-
|
21
|
+
path = tempfile()
|
22
|
+
system("touch %s" % path)
|
22
23
|
assert_equal(
|
23
|
-
|
24
|
-
Puppet::PackageSource.get("file
|
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
|
35
|
-
Puppet
|
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 "
|
45
|
-
|
46
|
-
|
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
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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.
|
74
|
-
|
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
|
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
|
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
|
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
|
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
|
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(:
|
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
|
-
|
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
|
-
|
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(
|
173
|
+
assert_events([:package_created], comp, "package")
|
164
174
|
|
165
175
|
# then uninstall it
|
166
176
|
assert_nothing_raised {
|
167
|
-
pkg[:
|
177
|
+
pkg[:ensure] = "absent"
|
168
178
|
}
|
169
179
|
|
170
180
|
|
171
181
|
pkg.retrieve
|
172
182
|
|
173
|
-
assert(! pkg.insync?, "Package is
|
183
|
+
assert(! pkg.insync?, "Package is in sync")
|
174
184
|
|
175
|
-
assert_events(
|
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
|
-
|
181
|
-
|
182
|
-
|
190
|
+
if pkg.respond_to?(:latest)
|
191
|
+
assert_nothing_raised {
|
192
|
+
pkg[:ensure] = "latest"
|
193
|
+
}
|
183
194
|
|
184
|
-
|
195
|
+
assert_events([:package_created], comp, "package")
|
185
196
|
|
186
|
-
|
187
|
-
|
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
|
-
|
204
|
+
pkg.retrieve
|
195
205
|
|
196
|
-
|
206
|
+
assert(! pkg.insync?, "Package is insync")
|
197
207
|
|
198
|
-
|
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
|
216
|
+
# $Id: package.rb 836 2006-01-17 22:11:51Z luke $
|