puppet 0.13.6 → 0.16.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 +57 -0
- data/Rakefile +38 -410
- data/bin/puppet +14 -12
- data/bin/puppetca +1 -3
- data/bin/puppetd +25 -7
- data/bin/puppetdoc +161 -104
- data/bin/puppetmasterd +4 -4
- data/conf/epm.list +8 -0
- data/conf/redhat/client.init +6 -1
- data/conf/redhat/no-chuser-0.15.1.patch +38 -0
- data/conf/redhat/puppet.spec +20 -5
- data/conf/redhat/puppetd.conf +1 -1
- data/conf/redhat/puppetmasterd.conf +1 -1
- data/conf/redhat/server.init +2 -4
- data/examples/code/snippets/{casestatement → casestatement.pp} +12 -1
- data/examples/code/snippets/selectorvalues.pp +15 -0
- data/examples/code/snippets/singleselector.pp +22 -0
- data/examples/code/snippets/tag.pp +9 -0
- data/ext/module_puppet +1 -1
- data/install.rb +303 -303
- data/lib/puppet.rb +7 -9
- data/lib/puppet/client.rb +18 -5
- data/lib/puppet/client/dipper.rb +12 -10
- data/lib/puppet/client/master.rb +113 -41
- data/lib/puppet/client/pelement.rb +20 -0
- data/lib/puppet/config.rb +113 -6
- data/lib/puppet/element.rb +1 -3
- data/lib/puppet/event.rb +12 -23
- data/lib/puppet/filetype.rb +93 -5
- data/lib/puppet/inifile.rb +201 -0
- data/lib/puppet/log.rb +18 -6
- data/lib/puppet/parameter.rb +80 -29
- data/lib/puppet/parser/ast.rb +6 -4
- data/lib/puppet/parser/ast/caseopt.rb +13 -4
- data/lib/puppet/parser/ast/casestatement.rb +2 -2
- data/lib/puppet/parser/ast/component.rb +4 -14
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +12 -0
- data/lib/puppet/parser/ast/node.rb +4 -4
- data/lib/puppet/parser/ast/objectdef.rb +5 -51
- data/lib/puppet/parser/ast/selector.rb +2 -0
- data/lib/puppet/parser/ast/tag.rb +26 -0
- data/lib/puppet/parser/interpreter.rb +89 -74
- data/lib/puppet/parser/lexer.rb +4 -3
- data/lib/puppet/parser/parser.rb +440 -378
- data/lib/puppet/parser/scope.rb +844 -887
- data/lib/puppet/server.rb +12 -1
- data/lib/puppet/server/authconfig.rb +166 -0
- data/lib/puppet/server/authstore.rb +8 -6
- data/lib/puppet/server/ca.rb +23 -26
- data/lib/puppet/server/filebucket.rb +24 -23
- data/lib/puppet/server/fileserver.rb +116 -47
- data/lib/puppet/server/master.rb +58 -19
- data/lib/puppet/server/pelement.rb +176 -0
- data/lib/puppet/server/rights.rb +78 -0
- data/lib/puppet/server/servlet.rb +19 -6
- data/lib/puppet/sslcertificates.rb +4 -2
- data/lib/puppet/sslcertificates/ca.rb +66 -34
- data/lib/puppet/storage.rb +20 -26
- data/lib/puppet/transaction.rb +49 -92
- data/lib/puppet/type.rb +142 -35
- data/lib/puppet/type/cron.rb +29 -14
- data/lib/puppet/type/exec.rb +92 -35
- data/lib/puppet/type/group.rb +29 -11
- data/lib/puppet/type/nameservice.rb +50 -1
- data/lib/puppet/type/nameservice/netinfo.rb +68 -1
- data/lib/puppet/type/nameservice/objectadd.rb +1 -0
- data/lib/puppet/type/package.rb +150 -109
- data/lib/puppet/type/package/apple.rb +27 -0
- data/lib/puppet/type/package/apt.rb +1 -0
- data/lib/puppet/type/package/darwinport.rb +97 -0
- data/lib/puppet/type/package/dpkg.rb +10 -2
- data/lib/puppet/type/package/freebsd.rb +19 -0
- data/lib/puppet/type/package/{bsd.rb → openbsd.rb} +36 -7
- data/lib/puppet/type/package/ports.rb +98 -0
- data/lib/puppet/type/package/rpm.rb +43 -7
- data/lib/puppet/type/package/sun.rb +53 -36
- data/lib/puppet/type/package/yum.rb +5 -16
- data/lib/puppet/type/parsedtype.rb +41 -29
- data/lib/puppet/type/parsedtype/host.rb +13 -5
- data/lib/puppet/type/parsedtype/mount.rb +250 -0
- data/lib/puppet/type/parsedtype/port.rb +8 -6
- data/lib/puppet/type/pfile.rb +284 -30
- data/lib/puppet/type/pfile/checksum.rb +96 -68
- data/lib/puppet/type/pfile/content.rb +16 -13
- data/lib/puppet/type/pfile/ensure.rb +64 -126
- data/lib/puppet/type/pfile/group.rb +12 -5
- data/lib/puppet/type/pfile/mode.rb +16 -4
- data/lib/puppet/type/pfile/source.rb +47 -73
- data/lib/puppet/type/pfile/target.rb +81 -0
- data/lib/puppet/type/pfile/uid.rb +10 -3
- data/lib/puppet/type/pfilebucket.rb +12 -3
- data/lib/puppet/type/schedule.rb +5 -1
- data/lib/puppet/type/service.rb +138 -66
- data/lib/puppet/type/service/debian.rb +9 -3
- data/lib/puppet/type/service/init.rb +51 -56
- data/lib/puppet/type/service/smf.rb +16 -6
- data/lib/puppet/type/state.rb +71 -32
- data/lib/puppet/type/symlink.rb +12 -7
- data/lib/puppet/type/tidy.rb +5 -1
- data/lib/puppet/type/user.rb +116 -20
- data/lib/puppet/type/yumrepo.rb +314 -0
- data/lib/puppet/util.rb +84 -14
- data/test/client/client.rb +41 -18
- data/test/client/master.rb +50 -4
- data/test/executables/puppetbin.rb +31 -4
- data/test/executables/puppetca.rb +18 -2
- data/test/language/ast.rb +201 -31
- data/test/language/interpreter.rb +8 -2
- data/test/{parser → language}/lexer.rb +1 -1
- data/test/language/node.rb +84 -0
- data/test/{parser → language}/parser.rb +1 -1
- data/test/language/scope.rb +101 -2
- data/test/language/snippets.rb +23 -2
- data/test/other/config.rb +99 -1
- data/test/other/filetype.rb +95 -0
- data/test/other/inifile.rb +114 -0
- data/test/other/log.rb +3 -2
- data/test/other/transactions.rb +55 -10
- data/test/puppet/utiltest.rb +25 -1
- data/test/puppettest.rb +140 -46
- data/test/server/authconfig.rb +56 -0
- data/test/server/bucket.rb +32 -18
- data/test/server/fileserver.rb +75 -30
- data/test/server/master.rb +27 -4
- data/test/server/pelement.rb +298 -0
- data/test/server/rights.rb +41 -0
- data/test/server/server.rb +2 -2
- data/test/tagging/tagging.rb +100 -1
- data/test/types/basic.rb +3 -3
- data/test/types/cron.rb +24 -1
- data/test/types/exec.rb +99 -1
- data/test/types/file.rb +298 -2
- data/test/types/filebucket.rb +4 -15
- data/test/types/filesources.rb +43 -14
- data/test/types/group.rb +1 -13
- data/test/types/mount.rb +277 -0
- data/test/types/package.rb +164 -33
- data/test/types/parameter.rb +107 -0
- data/test/types/port.rb +2 -1
- data/test/types/service.rb +37 -2
- data/test/types/state.rb +92 -0
- data/test/types/symlink.rb +30 -2
- data/test/types/tidy.rb +2 -14
- data/test/types/type.rb +35 -1
- data/test/types/user.rb +110 -1
- data/test/types/yumrepo.rb +95 -0
- metadata +316 -290
- data/test/types/filetype.rb +0 -160
data/test/server/master.rb
CHANGED
@@ -34,7 +34,7 @@ class TestMaster < Test::Unit::TestCase
|
|
34
34
|
assert_nothing_raised() {
|
35
35
|
# this is the default server setup
|
36
36
|
master = Puppet::Server::Master.new(
|
37
|
-
:
|
37
|
+
:Manifest => file,
|
38
38
|
:UseNodes => false,
|
39
39
|
:Local => true
|
40
40
|
)
|
@@ -79,7 +79,7 @@ class TestMaster < Test::Unit::TestCase
|
|
79
79
|
assert_nothing_raised() {
|
80
80
|
# this is the default server setup
|
81
81
|
master = Puppet::Server::Master.new(
|
82
|
-
:
|
82
|
+
:Manifest => file,
|
83
83
|
:UseNodes => false,
|
84
84
|
:Local => true
|
85
85
|
)
|
@@ -111,7 +111,7 @@ class TestMaster < Test::Unit::TestCase
|
|
111
111
|
assert_nothing_raised() {
|
112
112
|
# this is the default server setup
|
113
113
|
master = Puppet::Server::Master.new(
|
114
|
-
:
|
114
|
+
:Manifest => manifest,
|
115
115
|
:UseNodes => false,
|
116
116
|
:Local => true,
|
117
117
|
:FileTimeout => 15
|
@@ -173,7 +173,30 @@ class TestMaster < Test::Unit::TestCase
|
|
173
173
|
assert(FileTest.exists?(file2), "Second file %s does not exist" % file2)
|
174
174
|
end
|
175
175
|
|
176
|
+
def test_addfacts
|
177
|
+
master = nil
|
178
|
+
file = mktestmanifest()
|
179
|
+
# create our master
|
180
|
+
assert_nothing_raised() {
|
181
|
+
# this is the default server setup
|
182
|
+
master = Puppet::Server::Master.new(
|
183
|
+
:Manifest => file,
|
184
|
+
:UseNodes => false,
|
185
|
+
:Local => true
|
186
|
+
)
|
187
|
+
}
|
188
|
+
|
189
|
+
facts = {}
|
190
|
+
|
191
|
+
assert_nothing_raised {
|
192
|
+
master.addfacts(facts)
|
193
|
+
}
|
194
|
+
|
195
|
+
%w{serverversion servername serverip}.each do |fact|
|
196
|
+
assert(facts.include?(fact), "Fact %s was not set" % fact)
|
197
|
+
end
|
198
|
+
end
|
176
199
|
end
|
177
200
|
|
178
|
-
# $Id: master.rb
|
201
|
+
# $Id: master.rb 1102 2006-04-11 16:12:38Z luke $
|
179
202
|
|
@@ -0,0 +1,298 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
$:.unshift '../../lib'
|
3
|
+
$:.unshift '..'
|
4
|
+
$puppetbase = "../.."
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'puppet'
|
8
|
+
require 'puppet/server/pelement'
|
9
|
+
require 'test/unit'
|
10
|
+
require 'puppettest.rb'
|
11
|
+
require 'base64'
|
12
|
+
require 'cgi'
|
13
|
+
|
14
|
+
class TestPElementServer < Test::Unit::TestCase
|
15
|
+
include ServerTest
|
16
|
+
|
17
|
+
def verify_described(type, described)
|
18
|
+
described.each do |name, trans|
|
19
|
+
type.clear
|
20
|
+
obj = nil
|
21
|
+
assert_nothing_raised do
|
22
|
+
obj = trans.to_type
|
23
|
+
end
|
24
|
+
|
25
|
+
assert(obj, "Could not create object")
|
26
|
+
assert_nothing_raised do
|
27
|
+
obj.retrieve
|
28
|
+
end
|
29
|
+
|
30
|
+
assert(obj.insync?, "Described %s[%s] is not in sync" %
|
31
|
+
[trans.type, name])
|
32
|
+
|
33
|
+
if trans.type == :package
|
34
|
+
assert_equal(Puppet::Type.type(:package).default, obj[:type])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
type.clear
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_describe_file
|
41
|
+
# Make a file to describe
|
42
|
+
file = tempfile()
|
43
|
+
str = "yayness\n"
|
44
|
+
|
45
|
+
server = nil
|
46
|
+
|
47
|
+
assert_nothing_raised do
|
48
|
+
server = Puppet::Server::PElement.new()
|
49
|
+
end
|
50
|
+
|
51
|
+
# The first run we create the file on the copy, the second run
|
52
|
+
# the file is already there so the object should be in sync
|
53
|
+
2.times do |i|
|
54
|
+
[ [nil],
|
55
|
+
[[:content, :mode], []],
|
56
|
+
[[], [:content]],
|
57
|
+
[[:content], [:mode]]
|
58
|
+
].each do |ary|
|
59
|
+
retrieve = ary[0] || []
|
60
|
+
ignore = ary[1] || []
|
61
|
+
|
62
|
+
File.open(file, "w") { |f| f.print str }
|
63
|
+
|
64
|
+
result = nil
|
65
|
+
assert_nothing_raised do
|
66
|
+
result = server.describe("file", file, *ary)
|
67
|
+
end
|
68
|
+
|
69
|
+
assert(result, "Could not retrieve file information")
|
70
|
+
|
71
|
+
assert_instance_of(Puppet::TransObject, result)
|
72
|
+
|
73
|
+
# Now we have to clear, so that the server's object gets removed
|
74
|
+
Puppet::Type.type(:file).clear
|
75
|
+
|
76
|
+
# And remove the file, so we can verify it gets recreated
|
77
|
+
if i == 0
|
78
|
+
File.unlink(file)
|
79
|
+
end
|
80
|
+
|
81
|
+
object = nil
|
82
|
+
assert_nothing_raised do
|
83
|
+
object = result.to_type
|
84
|
+
end
|
85
|
+
|
86
|
+
assert(object, "Could not create type")
|
87
|
+
|
88
|
+
retrieve.each do |state|
|
89
|
+
assert(object.should(state), "Did not retrieve %s" % state)
|
90
|
+
end
|
91
|
+
|
92
|
+
ignore.each do |state|
|
93
|
+
assert(! object.should(state), "Incorrectly retrieved %s" % state)
|
94
|
+
end
|
95
|
+
|
96
|
+
if i == 0
|
97
|
+
assert_events([:file_created], object)
|
98
|
+
else
|
99
|
+
assert_nothing_raised {
|
100
|
+
object.retrieve
|
101
|
+
}
|
102
|
+
assert(object.insync?, "Object was not in sync")
|
103
|
+
end
|
104
|
+
|
105
|
+
assert(FileTest.exists?(file), "File did not get recreated")
|
106
|
+
|
107
|
+
if i == 0
|
108
|
+
if object.should(:content)
|
109
|
+
assert_equal(str, File.read(file), "File contents are not the same")
|
110
|
+
else
|
111
|
+
assert_equal("", File.read(file), "File content was incorrectly made")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
if FileTest.exists? file
|
115
|
+
File.unlink(file)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_describe_directory
|
122
|
+
# Make a file to describe
|
123
|
+
file = tempfile()
|
124
|
+
|
125
|
+
server = nil
|
126
|
+
|
127
|
+
assert_nothing_raised do
|
128
|
+
server = Puppet::Server::PElement.new()
|
129
|
+
end
|
130
|
+
|
131
|
+
[ [nil],
|
132
|
+
[[:ensure, :checksum, :mode], []],
|
133
|
+
[[], [:checksum]],
|
134
|
+
[[:ensure, :checksum], [:mode]]
|
135
|
+
].each do |ary|
|
136
|
+
retrieve = ary[0] || []
|
137
|
+
ignore = ary[1] || []
|
138
|
+
|
139
|
+
Dir.mkdir(file)
|
140
|
+
|
141
|
+
result = nil
|
142
|
+
assert_nothing_raised do
|
143
|
+
result = server.describe("file", file, *ary)
|
144
|
+
end
|
145
|
+
|
146
|
+
assert(result, "Could not retrieve file information")
|
147
|
+
|
148
|
+
assert_instance_of(Puppet::TransObject, result)
|
149
|
+
|
150
|
+
# Now we have to clear, so that the server's object gets removed
|
151
|
+
Puppet::Type.type(:file).clear
|
152
|
+
|
153
|
+
# And remove the file, so we can verify it gets recreated
|
154
|
+
Dir.rmdir(file)
|
155
|
+
|
156
|
+
object = nil
|
157
|
+
assert_nothing_raised do
|
158
|
+
object = result.to_type
|
159
|
+
end
|
160
|
+
|
161
|
+
assert(object, "Could not create type")
|
162
|
+
|
163
|
+
retrieve.each do |state|
|
164
|
+
assert(object.should(state), "Did not retrieve %s" % state)
|
165
|
+
end
|
166
|
+
|
167
|
+
ignore.each do |state|
|
168
|
+
assert(! object.should(state), "Incorrectly retrieved %s" % state)
|
169
|
+
end
|
170
|
+
|
171
|
+
assert_events([:directory_created], object)
|
172
|
+
|
173
|
+
assert(FileTest.directory?(file), "Directory did not get recreated")
|
174
|
+
Dir.rmdir(file)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_describe_alltypes
|
179
|
+
# Systems get pretty retarded, so I'm going to set the path to some fake
|
180
|
+
# data for ports
|
181
|
+
#Puppet::Type::ParsedType::Port.path = File.join($puppetbase,
|
182
|
+
# "test/data/types/ports/1")
|
183
|
+
#Puppet.err Puppet::Type::ParsedType::Port.path
|
184
|
+
server = nil
|
185
|
+
assert_nothing_raised do
|
186
|
+
server = Puppet::Server::PElement.new()
|
187
|
+
end
|
188
|
+
|
189
|
+
require 'etc'
|
190
|
+
|
191
|
+
# Make the example schedules, for testing
|
192
|
+
Puppet::Type.type(:schedule).mkdefaultschedules
|
193
|
+
|
194
|
+
Puppet::Type.eachtype do |type|
|
195
|
+
unless type.respond_to? :list
|
196
|
+
Puppet.warning "%s does not respond to :list" % type.name
|
197
|
+
next
|
198
|
+
end
|
199
|
+
#next unless type.name == :port
|
200
|
+
Puppet.info "Describing each %s" % type.name
|
201
|
+
|
202
|
+
# First do a listing from the server
|
203
|
+
bucket = nil
|
204
|
+
assert_nothing_raised {
|
205
|
+
bucket = server.list(type.name)
|
206
|
+
}
|
207
|
+
|
208
|
+
#type.clear
|
209
|
+
|
210
|
+
count = 0
|
211
|
+
described = {}
|
212
|
+
bucket.each do |obj|
|
213
|
+
assert_instance_of(Puppet::TransObject, obj)
|
214
|
+
break if count > 5
|
215
|
+
described[obj.name] = server.describe(obj.type, obj.name)
|
216
|
+
count += 1
|
217
|
+
end
|
218
|
+
|
219
|
+
verify_described(type, described)
|
220
|
+
|
221
|
+
count = 0
|
222
|
+
described = {}
|
223
|
+
type.list.each do |obj|
|
224
|
+
assert_instance_of(type, obj)
|
225
|
+
|
226
|
+
break if count > 5
|
227
|
+
trans = nil
|
228
|
+
assert_nothing_raised do
|
229
|
+
described[obj.name] = server.describe(type.name, obj.name)
|
230
|
+
end
|
231
|
+
|
232
|
+
count += 1
|
233
|
+
end
|
234
|
+
|
235
|
+
if described.empty?
|
236
|
+
Puppet.notice "Got no example objects for %s" % type.name
|
237
|
+
end
|
238
|
+
|
239
|
+
# We separate these, in case the list operation creates objects
|
240
|
+
verify_described(type, described)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
def test_apply
|
245
|
+
server = nil
|
246
|
+
assert_nothing_raised do
|
247
|
+
server = Puppet::Server::PElement.new()
|
248
|
+
end
|
249
|
+
|
250
|
+
file = tempfile()
|
251
|
+
str = "yayness\n"
|
252
|
+
|
253
|
+
File.open(file, "w") { |f| f.print str }
|
254
|
+
|
255
|
+
filetrans = nil
|
256
|
+
assert_nothing_raised {
|
257
|
+
filetrans = server.describe("file", file)
|
258
|
+
}
|
259
|
+
|
260
|
+
Puppet::Type.type(:file).clear
|
261
|
+
|
262
|
+
bucket = Puppet::TransBucket.new
|
263
|
+
bucket.type = "file"
|
264
|
+
bucket.push filetrans
|
265
|
+
|
266
|
+
File.unlink(file)
|
267
|
+
assert_nothing_raised {
|
268
|
+
server.apply(bucket)
|
269
|
+
}
|
270
|
+
|
271
|
+
assert(FileTest.exists?(file), "File did not get recreated")
|
272
|
+
|
273
|
+
# Now try it as a "nonlocal" server
|
274
|
+
server.local = false
|
275
|
+
yaml = nil
|
276
|
+
assert_nothing_raised {
|
277
|
+
yaml = CGI.escape(YAML::dump(bucket))
|
278
|
+
}
|
279
|
+
|
280
|
+
Puppet::Type.type(:file).clear
|
281
|
+
File.unlink(file)
|
282
|
+
|
283
|
+
if yaml =~ /(.{20}Loglevel.{20})/
|
284
|
+
Puppet.warning "YAML is broken on this machine"
|
285
|
+
return
|
286
|
+
end
|
287
|
+
assert_nothing_raised("Could not reload yaml") {
|
288
|
+
YAML::load(CGI.unescape(yaml))
|
289
|
+
}
|
290
|
+
|
291
|
+
assert_nothing_raised {
|
292
|
+
server.apply(yaml)
|
293
|
+
}
|
294
|
+
assert(FileTest.exists?(file), "File did not get recreated from YAML")
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
# $Id: pelement.rb 1129 2006-04-21 19:14:59Z luke $
|
@@ -0,0 +1,41 @@
|
|
1
|
+
if __FILE__ == $0
|
2
|
+
$:.unshift '../../lib'
|
3
|
+
$:.unshift '..'
|
4
|
+
$puppetbase = "../.."
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'puppet'
|
8
|
+
require 'puppet/server/rights'
|
9
|
+
require 'test/unit'
|
10
|
+
require 'puppettest.rb'
|
11
|
+
|
12
|
+
class TestRights < Test::Unit::TestCase
|
13
|
+
include TestPuppet
|
14
|
+
|
15
|
+
def test_rights
|
16
|
+
store = nil
|
17
|
+
assert_nothing_raised {
|
18
|
+
store = Puppet::Server::Rights.new
|
19
|
+
}
|
20
|
+
|
21
|
+
assert(store, "Did not create store")
|
22
|
+
|
23
|
+
assert_raise(ArgumentError, "Did not fail on unknown right") {
|
24
|
+
store.allowed?(:write, "host.madstop.com", "0.0.0.0")
|
25
|
+
}
|
26
|
+
|
27
|
+
assert_nothing_raised {
|
28
|
+
store.newright(:write)
|
29
|
+
}
|
30
|
+
|
31
|
+
assert(! store.allowed?(:write, "host.madstop.com", "0.0.0.0"),
|
32
|
+
"Defaulted to allowing access")
|
33
|
+
|
34
|
+
assert_nothing_raised {
|
35
|
+
store[:write].info "This is a log message"
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# $Id: rights.rb 1129 2006-04-21 19:14:59Z luke $
|
41
|
+
|
data/test/server/server.rb
CHANGED
@@ -13,7 +13,7 @@ require 'xmlrpc/client'
|
|
13
13
|
require 'test/unit'
|
14
14
|
require 'puppettest.rb'
|
15
15
|
|
16
|
-
# $Id: server.rb
|
16
|
+
# $Id: server.rb 1068 2006-04-04 23:13:55Z luke $
|
17
17
|
|
18
18
|
if ARGV.length > 0 and ARGV[0] == "short"
|
19
19
|
$short = true
|
@@ -85,7 +85,7 @@ class TestServer < Test::Unit::TestCase
|
|
85
85
|
:CA => {}, # so that certs autogenerate
|
86
86
|
:Master => {
|
87
87
|
:UseNodes => false,
|
88
|
-
:
|
88
|
+
:Manifest => file
|
89
89
|
},
|
90
90
|
:Status => nil
|
91
91
|
}
|
data/test/tagging/tagging.rb
CHANGED
@@ -75,6 +75,105 @@ class TestTagging < Test::Unit::TestCase
|
|
75
75
|
"Incorrect tags")
|
76
76
|
}
|
77
77
|
end
|
78
|
+
|
79
|
+
# Make sure that specifying tags results in only those objects getting
|
80
|
+
# run.
|
81
|
+
def test_tagspecs
|
82
|
+
a = tempfile()
|
83
|
+
b = tempfile()
|
84
|
+
|
85
|
+
afile = Puppet.type(:file).create(
|
86
|
+
:path => a,
|
87
|
+
:ensure => :file
|
88
|
+
)
|
89
|
+
afile.tag("a")
|
90
|
+
|
91
|
+
bfile = Puppet.type(:file).create(
|
92
|
+
:path => b,
|
93
|
+
:ensure => :file
|
94
|
+
)
|
95
|
+
bfile.tag(:b)
|
96
|
+
|
97
|
+
# First, make sure they get created when no spec'ed tags
|
98
|
+
assert_events([:file_created,:file_created], afile, bfile)
|
99
|
+
assert(FileTest.exists?(a), "A did not get created")
|
100
|
+
assert(FileTest.exists?(b), "B did not get created")
|
101
|
+
File.unlink(a)
|
102
|
+
File.unlink(b)
|
103
|
+
|
104
|
+
# Set the tags to a
|
105
|
+
assert_nothing_raised {
|
106
|
+
Puppet[:tags] = "a"
|
107
|
+
}
|
108
|
+
|
109
|
+
assert_events([:file_created], afile, bfile)
|
110
|
+
assert(FileTest.exists?(a), "A did not get created")
|
111
|
+
assert(!FileTest.exists?(b), "B got created")
|
112
|
+
File.unlink(a)
|
113
|
+
|
114
|
+
# Set the tags to b
|
115
|
+
assert_nothing_raised {
|
116
|
+
Puppet[:tags] = "b"
|
117
|
+
}
|
118
|
+
|
119
|
+
assert_events([:file_created], afile, bfile)
|
120
|
+
assert(!FileTest.exists?(a), "A got created")
|
121
|
+
assert(FileTest.exists?(b), "B did not get created")
|
122
|
+
File.unlink(b)
|
123
|
+
|
124
|
+
# Set the tags to something else
|
125
|
+
assert_nothing_raised {
|
126
|
+
Puppet[:tags] = "c"
|
127
|
+
}
|
128
|
+
|
129
|
+
assert_events([], afile, bfile)
|
130
|
+
assert(!FileTest.exists?(a), "A got created")
|
131
|
+
assert(!FileTest.exists?(b), "B got created")
|
132
|
+
|
133
|
+
# Now set both tags
|
134
|
+
assert_nothing_raised {
|
135
|
+
Puppet[:tags] = "b, a"
|
136
|
+
}
|
137
|
+
|
138
|
+
assert_events([:file_created, :file_created], afile, bfile)
|
139
|
+
assert(FileTest.exists?(a), "A did not get created")
|
140
|
+
assert(FileTest.exists?(b), "B did not get created")
|
141
|
+
File.unlink(a)
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_metaparamtag
|
146
|
+
path = tempfile()
|
147
|
+
|
148
|
+
start = %w{some tags}
|
149
|
+
tags = %w{a list of tags}
|
150
|
+
|
151
|
+
obj = nil
|
152
|
+
assert_nothing_raised do
|
153
|
+
obj = Puppet.type(:file).create(
|
154
|
+
:path => path,
|
155
|
+
:ensure => "file",
|
156
|
+
:tag => start
|
157
|
+
)
|
158
|
+
end
|
159
|
+
|
160
|
+
|
161
|
+
assert(obj, "Did not make object")
|
162
|
+
|
163
|
+
start.each do |tag|
|
164
|
+
assert(obj.tagged?(tag), "Object was not tagged with %s" % tag)
|
165
|
+
end
|
166
|
+
|
167
|
+
tags.each do |tag|
|
168
|
+
assert_nothing_raised {
|
169
|
+
obj[:tag] = tag
|
170
|
+
}
|
171
|
+
end
|
172
|
+
|
173
|
+
tags.each do |tag|
|
174
|
+
assert(obj.tagged?(tag), "Object was not tagged with %s" % tag)
|
175
|
+
end
|
176
|
+
end
|
78
177
|
end
|
79
178
|
|
80
|
-
# $Id: tagging.rb
|
179
|
+
# $Id: tagging.rb 1099 2006-04-11 15:30:19Z luke $
|