puppet 0.22.4 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +156 -0
- data/README +2 -2
- data/Rakefile +6 -6
- data/bin/filebucket +212 -0
- data/bin/puppet +2 -0
- data/bin/puppetca +2 -4
- data/bin/puppetd +16 -15
- data/bin/puppetdoc +46 -496
- data/bin/puppetmasterd +3 -5
- data/bin/puppetrun +8 -3
- data/bin/ralsh +271 -0
- data/conf/redhat/client.init +1 -1
- data/conf/redhat/puppet.spec +13 -2
- data/conf/solaris/pkginfo +1 -1
- data/ext/puppet-test +374 -0
- data/install.rb +40 -31
- data/lib/puppet.rb +39 -4
- data/lib/puppet/config_stores/rest.rb +60 -0
- data/lib/puppet/configuration.rb +312 -17
- data/lib/puppet/external/event-loop/event-loop.rb +4 -0
- data/lib/puppet/external/gratr/rdot.rb +1 -1
- data/lib/puppet/fact_stores/yaml.rb +42 -0
- data/lib/puppet/feature/base.rb +4 -1
- data/lib/puppet/metatype/attributes.rb +20 -43
- data/lib/puppet/metatype/container.rb +1 -36
- data/lib/puppet/metatype/evaluation.rb +48 -19
- data/lib/puppet/metatype/instances.rb +35 -1
- data/lib/puppet/metatype/metaparams.rb +23 -19
- data/lib/puppet/metatype/providers.rb +25 -38
- data/lib/puppet/network/client/ca.rb +8 -5
- data/lib/puppet/network/client/master.rb +59 -17
- data/lib/puppet/network/handler.rb +18 -1
- data/lib/puppet/network/handler/ca.rb +9 -3
- data/lib/puppet/network/handler/facts.rb +70 -0
- data/lib/puppet/network/handler/filebucket.rb +4 -1
- data/lib/puppet/network/handler/fileserver.rb +65 -21
- data/lib/puppet/network/handler/master.rb +6 -3
- data/lib/puppet/network/handler/report.rb +12 -26
- data/lib/puppet/network/handler/resource.rb +14 -2
- data/lib/puppet/network/handler/runner.rb +5 -1
- data/lib/puppet/network/handler/status.rb +5 -1
- data/lib/puppet/network/server/mongrel.rb +4 -4
- data/lib/puppet/network/server/webrick.rb +14 -3
- data/lib/puppet/parameter.rb +30 -25
- data/lib/puppet/parser/ast.rb +1 -6
- data/lib/puppet/parser/ast/component.rb +23 -20
- data/lib/puppet/parser/ast/hostclass.rb +7 -11
- data/lib/puppet/parser/ast/leaf.rb +4 -1
- data/lib/puppet/parser/ast/node.rb +6 -8
- data/lib/puppet/parser/functions.rb +7 -4
- data/lib/puppet/parser/interpreter.rb +155 -205
- data/lib/puppet/parser/lexer.rb +35 -2
- data/lib/puppet/parser/parser.rb +705 -612
- data/lib/puppet/parser/resource.rb +91 -48
- data/lib/puppet/parser/resource/param.rb +52 -29
- data/lib/puppet/parser/scope.rb +28 -23
- data/lib/puppet/pgraph.rb +26 -21
- data/lib/puppet/propertychange.rb +12 -12
- data/lib/puppet/provider.rb +102 -31
- data/lib/puppet/provider/cron/crontab.rb +7 -8
- data/lib/puppet/provider/group/groupadd.rb +4 -4
- data/lib/puppet/provider/group/pw.rb +3 -3
- data/lib/puppet/provider/mount.rb +8 -8
- data/lib/puppet/provider/mount/netinfo.rb +5 -5
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +19 -31
- data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
- data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
- data/lib/puppet/provider/nameservice/pw.rb +4 -4
- data/lib/puppet/provider/package.rb +31 -0
- data/lib/puppet/provider/package/appdmg.rb +118 -0
- data/lib/puppet/provider/package/apple.rb +18 -16
- data/lib/puppet/provider/package/apt.rb +13 -15
- data/lib/puppet/provider/package/aptitude.rb +5 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -11
- data/lib/puppet/provider/package/blastwave.rb +9 -9
- data/lib/puppet/provider/package/darwinport.rb +12 -11
- data/lib/puppet/provider/package/dpkg.rb +20 -12
- data/lib/puppet/provider/package/fink.rb +87 -0
- data/lib/puppet/provider/package/freebsd.rb +10 -11
- data/lib/puppet/provider/package/gem.rb +15 -15
- data/lib/puppet/provider/package/openbsd.rb +12 -17
- data/lib/puppet/provider/package/pkgdmg.rb +90 -16
- data/lib/puppet/provider/package/portage.rb +20 -14
- data/lib/puppet/provider/package/ports.rb +15 -13
- data/lib/puppet/provider/package/rpm.rb +20 -23
- data/lib/puppet/provider/package/rug.rb +6 -8
- data/lib/puppet/provider/package/sun.rb +20 -18
- data/lib/puppet/provider/package/sunfreeware.rb +2 -2
- data/lib/puppet/provider/package/up2date.rb +6 -10
- data/lib/puppet/provider/package/urpmi.rb +51 -0
- data/lib/puppet/provider/package/yum.rb +15 -13
- data/lib/puppet/provider/parsedfile.rb +53 -63
- data/lib/puppet/provider/service/base.rb +13 -15
- data/lib/puppet/provider/service/debian.rb +4 -4
- data/lib/puppet/provider/service/gentoo.rb +4 -4
- data/lib/puppet/provider/service/init.rb +22 -15
- data/lib/puppet/provider/service/redhat.rb +6 -6
- data/lib/puppet/provider/service/smf.rb +6 -6
- data/lib/puppet/provider/user/netinfo.rb +5 -5
- data/lib/puppet/provider/user/pw.rb +10 -5
- data/lib/puppet/provider/user/useradd.rb +9 -14
- data/lib/puppet/provider/zone/solaris.rb +80 -45
- data/lib/puppet/rails.rb +3 -34
- data/lib/puppet/rails/database/schema.rb +45 -24
- data/lib/puppet/rails/fact_value.rb +1 -0
- data/lib/puppet/rails/host.rb +69 -40
- data/lib/puppet/rails/param_name.rb +3 -8
- data/lib/puppet/rails/param_value.rb +2 -1
- data/lib/puppet/rails/puppet_class.rb +0 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +41 -17
- data/lib/puppet/rails/resource_tag.rb +4 -0
- data/lib/puppet/reference/configuration.rb +149 -0
- data/lib/puppet/reference/function.rb +13 -0
- data/lib/puppet/reference/network.rb +37 -0
- data/lib/puppet/reference/providers.rb +118 -0
- data/lib/puppet/reference/report.rb +21 -0
- data/lib/puppet/reference/type.rb +152 -0
- data/lib/puppet/reports/rrdgraph.rb +21 -7
- data/lib/puppet/reports/tagmail.rb +4 -1
- data/lib/puppet/sslcertificates.rb +1 -49
- data/lib/puppet/sslcertificates/ca.rb +2 -79
- data/lib/puppet/sslcertificates/inventory.rb +0 -10
- data/lib/puppet/transaction.rb +24 -41
- data/lib/puppet/transaction/report.rb +27 -1
- data/lib/puppet/type.rb +7 -43
- data/lib/puppet/type/component.rb +198 -124
- data/lib/puppet/type/cron.rb +51 -42
- data/lib/puppet/type/exec.rb +20 -19
- data/lib/puppet/type/group.rb +6 -55
- data/lib/puppet/type/host.rb +16 -37
- data/lib/puppet/type/mount.rb +30 -17
- data/lib/puppet/type/notify.rb +7 -8
- data/lib/puppet/type/package.rb +44 -80
- data/lib/puppet/type/pfile.rb +50 -41
- data/lib/puppet/type/pfile/checksum.rb +82 -95
- data/lib/puppet/type/pfile/content.rb +21 -25
- data/lib/puppet/type/pfile/ensure.rb +32 -30
- data/lib/puppet/type/pfile/group.rb +21 -26
- data/lib/puppet/type/pfile/mode.rb +25 -32
- data/lib/puppet/type/pfile/owner.rb +23 -27
- data/lib/puppet/type/pfile/source.rb +42 -33
- data/lib/puppet/type/pfile/target.rb +20 -18
- data/lib/puppet/type/pfile/type.rb +6 -7
- data/lib/puppet/type/pfilebucket.rb +3 -3
- data/lib/puppet/type/port.rb +5 -7
- data/lib/puppet/type/property.rb +58 -61
- data/lib/puppet/type/resources.rb +12 -8
- data/lib/puppet/type/schedule.rb +8 -8
- data/lib/puppet/type/service.rb +26 -33
- data/lib/puppet/type/sshkey.rb +6 -7
- data/lib/puppet/type/tidy.rb +41 -35
- data/lib/puppet/type/user.rb +34 -67
- data/lib/puppet/type/yumrepo.rb +27 -12
- data/lib/puppet/type/zone.rb +71 -110
- data/lib/puppet/util.rb +46 -61
- data/lib/puppet/util/autoload.rb +59 -47
- data/lib/puppet/util/config.rb +160 -18
- data/lib/puppet/util/config_store.rb +61 -0
- data/lib/puppet/util/fact_store.rb +60 -0
- data/lib/puppet/util/instance_loader.rb +74 -0
- data/lib/puppet/util/loadedfile.rb +5 -8
- data/lib/puppet/util/metric.rb +17 -25
- data/lib/puppet/util/posix.rb +39 -7
- data/lib/puppet/util/provider_features.rb +9 -1
- data/lib/puppet/util/rails/collection_merger.rb +16 -1
- data/lib/puppet/util/reference.rb +189 -0
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/subclass_loader.rb +9 -2
- data/test/language/ast.rb +4 -148
- data/test/language/ast/component.rb +10 -1
- data/test/language/collector.rb +1 -191
- data/test/language/interpreter.rb +284 -327
- data/test/language/lexer.rb +13 -1
- data/test/language/node.rb +1 -1
- data/test/language/parser.rb +17 -4
- data/test/language/resource.rb +67 -101
- data/test/language/scope.rb +18 -3
- data/test/language/snippets.rb +114 -151
- data/test/lib/puppettest.rb +13 -0
- data/test/lib/puppettest/exetest.rb +7 -0
- data/test/lib/puppettest/fakes.rb +39 -28
- data/test/lib/puppettest/railstesting.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +30 -0
- data/test/network/client/ca.rb +27 -1
- data/test/network/client/client.rb +3 -3
- data/test/network/client/master.rb +102 -1
- data/test/network/handler/ca.rb +35 -1
- data/test/network/handler/facts.rb +112 -0
- data/test/network/handler/fileserver.rb +25 -1
- data/test/network/handler/handler.rb +2 -2
- data/test/network/handler/master.rb +2 -49
- data/test/network/handler/resource.rb +5 -6
- data/test/network/server/mongrel_test.rb +65 -0
- data/test/network/server/webrick.rb +2 -2
- data/test/network/xmlrpc/client.rb +2 -1
- data/test/network/xmlrpc/processor.rb +2 -1
- data/test/other/pgraph.rb +6 -5
- data/test/other/propertychange.rb +11 -12
- data/test/other/report.rb +44 -27
- data/test/other/transactions.rb +17 -16
- data/test/puppet/tc_suidmanager.rb +2 -2
- data/test/rails/ast.rb +74 -0
- data/test/rails/collection.rb +214 -0
- data/test/rails/host.rb +49 -24
- data/test/rails/interpreter.rb +91 -0
- data/test/rails/railsparameter.rb +22 -11
- data/test/rails/railsresource.rb +140 -7
- data/test/ral/manager/attributes.rb +37 -13
- data/test/ral/manager/instances.rb +82 -0
- data/test/ral/manager/provider.rb +60 -22
- data/test/ral/manager/type.rb +9 -6
- data/test/ral/providers/cron/crontab.rb +59 -7
- data/test/ral/providers/group.rb +7 -7
- data/test/ral/providers/host/netinfo.rb +5 -6
- data/test/ral/providers/host/parsed.rb +4 -4
- data/test/ral/providers/mount/parsed.rb +11 -6
- data/test/ral/providers/nameservice.rb +2 -2
- data/test/ral/providers/package.rb +39 -14
- data/test/ral/providers/package/apt.rb +72 -3
- data/test/ral/providers/package/aptitude.rb +15 -12
- data/test/ral/providers/package/aptrpm.rb +3 -3
- data/test/ral/providers/package/dpkg.rb +2 -2
- data/test/ral/providers/parsedfile.rb +114 -88
- data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
- data/test/ral/providers/provider.rb +93 -13
- data/test/ral/providers/service.rb +52 -26
- data/test/ral/providers/sshkey/parsed.rb +3 -3
- data/test/ral/providers/user.rb +19 -20
- data/test/ral/providers/user/useradd.rb +1 -5
- data/test/ral/types/cron.rb +49 -36
- data/test/ral/types/file.rb +38 -35
- data/test/ral/types/file/target.rb +4 -4
- data/test/ral/types/filesources.rb +24 -22
- data/test/ral/types/group.rb +4 -2
- data/test/ral/types/host.rb +17 -10
- data/test/ral/types/mount.rb +40 -23
- data/test/ral/types/package.rb +62 -5
- data/test/ral/types/parameter.rb +2 -2
- data/test/ral/types/property.rb +27 -20
- data/test/ral/types/resources.rb +4 -16
- data/test/ral/types/schedule.rb +2 -2
- data/test/ral/types/service.rb +2 -3
- data/test/ral/types/sshkey.rb +3 -3
- data/test/ral/types/tidy.rb +6 -15
- data/test/ral/types/user.rb +17 -17
- data/test/ral/types/yumrepo.rb +2 -2
- data/test/ral/types/zone.rb +71 -87
- data/test/util/autoload.rb +6 -21
- data/test/util/config.rb +201 -101
- data/test/util/fact_store.rb +67 -0
- data/test/util/features.rb +9 -6
- data/test/util/instance_loader.rb +53 -0
- data/test/util/loadedfile.rb +17 -1
- data/test/util/metrics.rb +54 -57
- data/test/util/posixtest.rb +8 -11
- data/test/util/utiltest.rb +31 -2
- metadata +520 -492
- data/TODO +0 -4
- data/lib/puppet/network/client/logger.rb +0 -6
- data/lib/puppet/network/handler/logger.rb +0 -52
- data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
- data/lib/puppet/type/parsedtype.rb +0 -219
- data/test/network/handler/logger.rb +0 -183
data/test/other/report.rb
CHANGED
@@ -11,6 +11,35 @@ class TestReports < Test::Unit::TestCase
|
|
11
11
|
include PuppetTest
|
12
12
|
include PuppetTest::Reporttesting
|
13
13
|
|
14
|
+
def mkreport
|
15
|
+
# First do some work
|
16
|
+
objects = []
|
17
|
+
6.times do |i|
|
18
|
+
file = tempfile()
|
19
|
+
|
20
|
+
# Make every third file
|
21
|
+
File.open(file, "w") { |f| f.puts "" } if i % 3 == 0
|
22
|
+
|
23
|
+
objects << Puppet::Type.newfile(
|
24
|
+
:path => file,
|
25
|
+
:ensure => "file"
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
comp = newcomp(*objects)
|
30
|
+
|
31
|
+
trans = nil
|
32
|
+
assert_nothing_raised("Failed to create transaction") {
|
33
|
+
trans = comp.evaluate
|
34
|
+
}
|
35
|
+
|
36
|
+
assert_nothing_raised("Failed to evaluate transaction") {
|
37
|
+
trans.evaluate
|
38
|
+
}
|
39
|
+
|
40
|
+
return trans.generate_report
|
41
|
+
end
|
42
|
+
|
14
43
|
# Make sure we can use reports as log destinations.
|
15
44
|
def test_reports_as_log_destinations
|
16
45
|
report = fakereport
|
@@ -91,32 +120,7 @@ class TestReports < Test::Unit::TestCase
|
|
91
120
|
if Puppet.features.rrd?
|
92
121
|
def test_rrdgraph_report
|
93
122
|
Puppet.config.use(:metrics)
|
94
|
-
|
95
|
-
objects = []
|
96
|
-
6.times do |i|
|
97
|
-
file = tempfile()
|
98
|
-
|
99
|
-
# Make every third file
|
100
|
-
File.open(file, "w") { |f| f.puts "" } if i % 3 == 0
|
101
|
-
|
102
|
-
objects << Puppet::Type.newfile(
|
103
|
-
:path => file,
|
104
|
-
:ensure => "file"
|
105
|
-
)
|
106
|
-
end
|
107
|
-
|
108
|
-
comp = newcomp(*objects)
|
109
|
-
|
110
|
-
trans = nil
|
111
|
-
assert_nothing_raised("Failed to create transaction") {
|
112
|
-
trans = comp.evaluate
|
113
|
-
}
|
114
|
-
|
115
|
-
assert_nothing_raised("Failed to evaluate transaction") {
|
116
|
-
trans.evaluate
|
117
|
-
}
|
118
|
-
|
119
|
-
report = trans.generate_report
|
123
|
+
report = mkreport
|
120
124
|
|
121
125
|
assert(! report.metrics.empty?, "Did not receive any metrics")
|
122
126
|
|
@@ -230,6 +234,19 @@ class TestReports < Test::Unit::TestCase
|
|
230
234
|
end
|
231
235
|
end
|
232
236
|
end
|
237
|
+
|
238
|
+
def test_summary
|
239
|
+
report = mkreport
|
240
|
+
|
241
|
+
summary = nil
|
242
|
+
assert_nothing_raised("Could not create report summary") do
|
243
|
+
summary = report.summary
|
244
|
+
end
|
245
|
+
|
246
|
+
%w{Changes Total Resources}.each do |main|
|
247
|
+
assert(summary.include?(main), "Summary did not include info for %s" % main)
|
248
|
+
end
|
249
|
+
end
|
233
250
|
end
|
234
251
|
|
235
|
-
# $Id: report.rb
|
252
|
+
# $Id: report.rb 2459 2007-05-04 05:04:29Z luke $
|
data/test/other/transactions.rb
CHANGED
@@ -7,7 +7,7 @@ require 'puppettest'
|
|
7
7
|
require 'mocha'
|
8
8
|
require 'puppettest/support/resources'
|
9
9
|
|
10
|
-
# $Id: transactions.rb
|
10
|
+
# $Id: transactions.rb 2551 2007-06-04 20:37:14Z luke $
|
11
11
|
|
12
12
|
class TestTransactions < Test::Unit::TestCase
|
13
13
|
include PuppetTest::FileTesting
|
@@ -17,7 +17,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
17
17
|
def should_to_s
|
18
18
|
@should.to_s
|
19
19
|
end
|
20
|
-
def insync?
|
20
|
+
def insync?(foo)
|
21
21
|
true
|
22
22
|
end
|
23
23
|
def info(*args)
|
@@ -124,8 +124,8 @@ class TestTransactions < Test::Unit::TestCase
|
|
124
124
|
|
125
125
|
# Now create a provider
|
126
126
|
type.provide(:prefetch) do
|
127
|
-
def self.prefetch
|
128
|
-
$prefetched =
|
127
|
+
def self.prefetch(resources)
|
128
|
+
$prefetched = resources
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
@@ -140,7 +140,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
140
140
|
trans.prefetch
|
141
141
|
end
|
142
142
|
|
143
|
-
assert_equal(
|
143
|
+
assert_equal({inst.title => inst}, $prefetched, "type prefetch was not called")
|
144
144
|
|
145
145
|
# Now make sure it gets called from within evaluate()
|
146
146
|
$prefetched = false
|
@@ -148,7 +148,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
148
148
|
trans.evaluate
|
149
149
|
end
|
150
150
|
|
151
|
-
assert_equal(
|
151
|
+
assert_equal({inst.title => inst}, $prefetched, "evaluate did not call prefetch")
|
152
152
|
end
|
153
153
|
|
154
154
|
def test_refreshes_generate_events
|
@@ -248,8 +248,9 @@ class TestTransactions < Test::Unit::TestCase
|
|
248
248
|
|
249
249
|
assert_nothing_raised() {
|
250
250
|
check.each { |property|
|
251
|
-
|
252
|
-
|
251
|
+
value = file.value(property)
|
252
|
+
assert(value)
|
253
|
+
properties[property] = value
|
253
254
|
}
|
254
255
|
}
|
255
256
|
|
@@ -277,7 +278,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
277
278
|
}
|
278
279
|
properties.each { |property,value|
|
279
280
|
assert_equal(
|
280
|
-
value,file.
|
281
|
+
value, file.value(property), "File %s remained %s" % [property, file.value(property)]
|
281
282
|
)
|
282
283
|
}
|
283
284
|
end
|
@@ -310,7 +311,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
310
311
|
}
|
311
312
|
|
312
313
|
check.each { |property|
|
313
|
-
properties[property] = file
|
314
|
+
properties[property] = file.value(property)
|
314
315
|
}
|
315
316
|
assert_nothing_raised() {
|
316
317
|
file[:mode] = "755"
|
@@ -466,7 +467,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
466
467
|
|
467
468
|
file[:content] = "totally different content"
|
468
469
|
|
469
|
-
assert(! file.insync
|
470
|
+
assert(! file.insync?(file.retrieve), "Uh, file is in sync?")
|
470
471
|
|
471
472
|
assert_events([:file_changed, :triggered], comp)
|
472
473
|
assert(FileTest.exists?(fname), "File did not get recreated")
|
@@ -766,7 +767,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
766
767
|
type = mkreducer do
|
767
768
|
def evaluate
|
768
769
|
return Puppet::PropertyChange.new(Fakeprop.new(
|
769
|
-
:path => :path, :is => :is, :should => :should, :name => self.name, :
|
770
|
+
:path => :path, :is => :is, :should => :should, :name => self.name, :resource => "a parent"), :is)
|
770
771
|
end
|
771
772
|
end
|
772
773
|
|
@@ -778,7 +779,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
778
779
|
assert_nothing_raised do
|
779
780
|
trans.eval_resource(resource)
|
780
781
|
end
|
781
|
-
|
782
|
+
|
782
783
|
changes = trans.instance_variable_get("@changes")
|
783
784
|
|
784
785
|
assert(changes.length > 0, "did not get any changes")
|
@@ -884,7 +885,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
884
885
|
end
|
885
886
|
|
886
887
|
def test_graph
|
887
|
-
Puppet.config.use(:
|
888
|
+
Puppet.config.use(:main)
|
888
889
|
# Make a graph
|
889
890
|
graph = Puppet::PGraph.new
|
890
891
|
graph.add_edge!("a", "b")
|
@@ -1015,7 +1016,7 @@ class TestTransactions < Test::Unit::TestCase
|
|
1015
1016
|
|
1016
1017
|
obj = type.create(:name => "yay", :testing => "cool")
|
1017
1018
|
|
1018
|
-
assert(! obj.insync
|
1019
|
+
assert(! obj.insync?(obj.retrieve), "fake object is already in sync")
|
1019
1020
|
|
1020
1021
|
# Now make sure it gets refreshed when the change happens
|
1021
1022
|
assert_apply(obj)
|
@@ -1149,4 +1150,4 @@ class TestTransactions < Test::Unit::TestCase
|
|
1149
1150
|
end
|
1150
1151
|
end
|
1151
1152
|
|
1152
|
-
# $Id: transactions.rb
|
1153
|
+
# $Id: transactions.rb 2551 2007-06-04 20:37:14Z luke $
|
@@ -76,7 +76,7 @@ class TestSUIDManager < Test::Unit::TestCase
|
|
76
76
|
if @run
|
77
77
|
user = nonrootuser
|
78
78
|
status = Puppet::Util::SUIDManager.system("exit $EUID", user.uid, user.gid)
|
79
|
-
assert_equal(user.uid, status.exitstatus)
|
79
|
+
assert_equal(user.uid, status.exitstatus, "EUID does not seem to be inherited. This test consistently fails on RedHat-like machines.")
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -104,4 +104,4 @@ class TestSUIDManager < Test::Unit::TestCase
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
-
# $Id: tc_suidmanager.rb
|
107
|
+
# $Id: tc_suidmanager.rb 2625 2007-06-19 01:51:48Z luke $
|
data/test/rails/ast.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
|
+
|
5
|
+
require 'puppettest'
|
6
|
+
require 'puppet/rails'
|
7
|
+
require 'puppet/parser/parser'
|
8
|
+
require 'puppettest/resourcetesting'
|
9
|
+
require 'puppettest/parsertesting'
|
10
|
+
require 'puppettest/railstesting'
|
11
|
+
require 'puppettest/support/collection'
|
12
|
+
|
13
|
+
class TestRailsAST < PuppetTest::TestCase
|
14
|
+
confine "Missing rails" => Puppet.features.rails?
|
15
|
+
include PuppetTest::RailsTesting
|
16
|
+
include PuppetTest::ParserTesting
|
17
|
+
include PuppetTest::ResourceTesting
|
18
|
+
include PuppetTest::Support::Collection
|
19
|
+
|
20
|
+
def test_exported_collexp
|
21
|
+
railsinit
|
22
|
+
Puppet[:storeconfigs] = true
|
23
|
+
@interp, @scope, @source = mkclassframing
|
24
|
+
|
25
|
+
# make a rails resource
|
26
|
+
railsresource "file", "/tmp/testing", :owner => "root", :group => "bin",
|
27
|
+
:mode => "644"
|
28
|
+
|
29
|
+
run_collection_queries(:exported) do |string, result, query|
|
30
|
+
code = nil
|
31
|
+
str = nil
|
32
|
+
|
33
|
+
# We don't support anything but the title in rails right now
|
34
|
+
retval = nil
|
35
|
+
bad = false
|
36
|
+
# Figure out if the search is for anything rails will ignore
|
37
|
+
string.scan(/(\w+) [!=]= \w+/) do |s|
|
38
|
+
unless s[0] == "title"
|
39
|
+
bad = true
|
40
|
+
break
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# And if it is, make sure we throw an error.
|
45
|
+
if bad
|
46
|
+
assert_raise(Puppet::ParseError, "Evaluated '#{string}'") do
|
47
|
+
str, code = query.evaluate :scope => @scope
|
48
|
+
end
|
49
|
+
next
|
50
|
+
else
|
51
|
+
assert_nothing_raised("Could not evaluate '#{string}'") do
|
52
|
+
str, code = query.evaluate :scope => @scope
|
53
|
+
end
|
54
|
+
end
|
55
|
+
assert_nothing_raised("Could not find resource") do
|
56
|
+
retval = Puppet::Rails::Resource.find(:all,
|
57
|
+
:include => :param_values,
|
58
|
+
:conditions => str)
|
59
|
+
end
|
60
|
+
|
61
|
+
if result
|
62
|
+
assert_equal(1, retval.length, "Did not find resource with '#{string}'")
|
63
|
+
res = retval.shift
|
64
|
+
|
65
|
+
assert_equal("file", res.restype)
|
66
|
+
assert_equal("/tmp/testing", res.title)
|
67
|
+
else
|
68
|
+
assert_equal(0, retval.length, "found a resource with '#{string}'")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# $Id: ast.rb 2597 2007-06-17 21:41:50Z luke $
|
@@ -0,0 +1,214 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
|
+
|
5
|
+
require 'puppet'
|
6
|
+
require 'puppet/rails'
|
7
|
+
require 'puppettest'
|
8
|
+
require 'puppettest/railstesting'
|
9
|
+
require 'puppettest/resourcetesting'
|
10
|
+
|
11
|
+
|
12
|
+
# A separate class for testing rails integration
|
13
|
+
class TestRailsCollection < PuppetTest::TestCase
|
14
|
+
confine "Missing rails support" => Puppet.features.rails?
|
15
|
+
include PuppetTest
|
16
|
+
include PuppetTest::ParserTesting
|
17
|
+
include PuppetTest::ResourceTesting
|
18
|
+
include PuppetTest::RailsTesting
|
19
|
+
Parser = Puppet::Parser
|
20
|
+
AST = Parser::AST
|
21
|
+
|
22
|
+
def setup
|
23
|
+
super
|
24
|
+
Puppet[:trace] = false
|
25
|
+
@interp, @scope, @source = mkclassframing
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_collect_exported
|
29
|
+
railsinit
|
30
|
+
|
31
|
+
# Set a hostname
|
32
|
+
@scope.host = Facter.value(:hostname)
|
33
|
+
|
34
|
+
# make an exported resource
|
35
|
+
exported = mkresource(:type => "file", :title => "/tmp/exported",
|
36
|
+
:exported => true, :params => {:owner => "root"})
|
37
|
+
@scope.setresource exported
|
38
|
+
|
39
|
+
assert(exported.exported?, "Object was not marked exported")
|
40
|
+
assert(exported.virtual?, "Object was not marked virtual")
|
41
|
+
|
42
|
+
# And a non-exported
|
43
|
+
real = mkresource(:type => "file", :title => "/tmp/real",
|
44
|
+
:params => {:owner => "root"})
|
45
|
+
@scope.setresource real
|
46
|
+
|
47
|
+
# Now make a collector
|
48
|
+
coll = nil
|
49
|
+
assert_nothing_raised do
|
50
|
+
coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Set it in our scope
|
54
|
+
@scope.newcollection(coll)
|
55
|
+
|
56
|
+
# Make sure it's in the collections
|
57
|
+
assert_equal([coll], @scope.collections)
|
58
|
+
|
59
|
+
# And try to collect the virtual resources.
|
60
|
+
ret = nil
|
61
|
+
assert_nothing_raised do
|
62
|
+
ret = coll.collect_exported
|
63
|
+
end
|
64
|
+
|
65
|
+
assert_equal([exported], ret)
|
66
|
+
|
67
|
+
# Now make sure evaluate does the right thing.
|
68
|
+
assert_nothing_raised do
|
69
|
+
ret = coll.evaluate
|
70
|
+
end
|
71
|
+
|
72
|
+
# Make sure that the collection does not find the resource on the
|
73
|
+
# next run.
|
74
|
+
ret = nil
|
75
|
+
assert_nothing_raised do
|
76
|
+
ret = coll.collect_exported
|
77
|
+
end
|
78
|
+
|
79
|
+
assert(ret.empty?, "Exported resource was collected on the second run")
|
80
|
+
|
81
|
+
|
82
|
+
# And make sure our exported object is no longer exported
|
83
|
+
assert(! exported.virtual?, "Virtual object did not get realized")
|
84
|
+
|
85
|
+
# But it should still be marked exported.
|
86
|
+
assert(exported.exported?, "Resource got un-exported")
|
87
|
+
|
88
|
+
# Now make a new collector of a different type and make sure it
|
89
|
+
# finds nothing.
|
90
|
+
assert_nothing_raised do
|
91
|
+
coll = Puppet::Parser::Collector.new(@scope, "exec", nil, nil, :exported)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Remark this as virtual
|
95
|
+
exported.virtual = true
|
96
|
+
|
97
|
+
assert_nothing_raised do
|
98
|
+
ret = coll.evaluate
|
99
|
+
end
|
100
|
+
|
101
|
+
assert(! ret, "got resources back")
|
102
|
+
|
103
|
+
# Now create a whole new scope and make sure we can actually retrieve
|
104
|
+
# the resource from the database, not just from the scope.
|
105
|
+
# First create a host object and store our resource in it.
|
106
|
+
|
107
|
+
# Now collect our facts
|
108
|
+
facts = {}
|
109
|
+
Facter.each do |fact, value| facts[fact] = value end
|
110
|
+
|
111
|
+
# Now try storing our crap
|
112
|
+
# Remark this as exported
|
113
|
+
exported.exported = true
|
114
|
+
host = Puppet::Rails::Host.store(
|
115
|
+
:resources => [exported],
|
116
|
+
:facts => facts,
|
117
|
+
:name => facts["hostname"]
|
118
|
+
)
|
119
|
+
assert(host, "did not get rails host")
|
120
|
+
host.save
|
121
|
+
|
122
|
+
# And make sure it's in there
|
123
|
+
newres = host.resources.find_by_restype_and_title_and_exported("file", "/tmp/exported", true)
|
124
|
+
assert(newres, "Did not find resource in db")
|
125
|
+
interp, scope, source = mkclassframing
|
126
|
+
scope.host = "two"
|
127
|
+
|
128
|
+
# Now make a collector
|
129
|
+
coll = nil
|
130
|
+
assert_nothing_raised do
|
131
|
+
coll = Puppet::Parser::Collector.new(scope, "file", nil, nil, :exported)
|
132
|
+
end
|
133
|
+
|
134
|
+
# Set it in our scope
|
135
|
+
scope.newcollection(coll)
|
136
|
+
|
137
|
+
# Make sure it's in the collections
|
138
|
+
assert_equal([coll], scope.collections)
|
139
|
+
|
140
|
+
# And try to collect the virtual resources.
|
141
|
+
ret = nil
|
142
|
+
assert_nothing_raised do
|
143
|
+
ret = coll.collect_exported
|
144
|
+
end
|
145
|
+
|
146
|
+
assert_equal(["/tmp/exported"], ret.collect { |f| f.title })
|
147
|
+
|
148
|
+
# Make sure we can evaluate the same collection multiple times and
|
149
|
+
# that later collections do nothing
|
150
|
+
assert_nothing_raised("Collection found same resource twice") do
|
151
|
+
ret = coll.evaluate
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_collection_conflicts
|
156
|
+
railsinit
|
157
|
+
|
158
|
+
# First make a railshost we can conflict with
|
159
|
+
host = Puppet::Rails::Host.new(:name => "myhost")
|
160
|
+
|
161
|
+
host.resources.build(:title => "/tmp/conflicttest", :restype => "file",
|
162
|
+
:exported => true)
|
163
|
+
|
164
|
+
host.save
|
165
|
+
|
166
|
+
# Now make a normal resource
|
167
|
+
normal = mkresource(:type => "file", :title => "/tmp/conflicttest",
|
168
|
+
:params => {:owner => "root"})
|
169
|
+
@scope.setresource normal
|
170
|
+
@scope.host = "otherhost"
|
171
|
+
|
172
|
+
# Now make a collector
|
173
|
+
coll = nil
|
174
|
+
assert_nothing_raised do
|
175
|
+
coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
|
176
|
+
end
|
177
|
+
|
178
|
+
# And try to collect the virtual resources.
|
179
|
+
assert_raise(Puppet::ParseError) do
|
180
|
+
ret = coll.collect_exported
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
# Make sure we do not collect resources from the host we're on
|
185
|
+
def test_no_resources_from_me
|
186
|
+
railsinit
|
187
|
+
|
188
|
+
# Make our configuration
|
189
|
+
host = Puppet::Rails::Host.new(:name => "myhost")
|
190
|
+
|
191
|
+
host.resources.build(:title => "/tmp/hosttest", :type => "file",
|
192
|
+
:exported => true)
|
193
|
+
|
194
|
+
host.save
|
195
|
+
|
196
|
+
@scope.host = "myhost"
|
197
|
+
|
198
|
+
# Now make a collector
|
199
|
+
coll = nil
|
200
|
+
assert_nothing_raised do
|
201
|
+
coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
|
202
|
+
end
|
203
|
+
|
204
|
+
# And make sure we get nada back
|
205
|
+
ret = nil
|
206
|
+
assert_nothing_raised do
|
207
|
+
ret = coll.collect_exported
|
208
|
+
end
|
209
|
+
|
210
|
+
assert(ret.empty?, "Found exports from our own host")
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
# $Id: collection.rb 2596 2007-06-17 01:02:31Z luke $
|