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/rails/host.rb
CHANGED
@@ -12,7 +12,8 @@ require 'puppettest/parsertesting'
|
|
12
12
|
require 'puppettest/resourcetesting'
|
13
13
|
require 'puppettest/railstesting'
|
14
14
|
|
15
|
-
class TestRailsHost <
|
15
|
+
class TestRailsHost < PuppetTest::TestCase
|
16
|
+
confine "Missing ActiveRecord" => Puppet.features.rails?
|
16
17
|
include PuppetTest::ParserTesting
|
17
18
|
include PuppetTest::ResourceTesting
|
18
19
|
include PuppetTest::RailsTesting
|
@@ -33,8 +34,6 @@ class TestRailsHost < Test::Unit::TestCase
|
|
33
34
|
}
|
34
35
|
end
|
35
36
|
|
36
|
-
# Don't do any tests w/out this class
|
37
|
-
if Puppet.features.rails?
|
38
37
|
def test_store
|
39
38
|
@interp, @scope, @source = mkclassframing
|
40
39
|
# First make some objects
|
@@ -77,7 +76,7 @@ class TestRailsHost < Test::Unit::TestCase
|
|
77
76
|
assert(host.resources, "No objects on host")
|
78
77
|
|
79
78
|
facts.each do |fact, value|
|
80
|
-
assert_equal(value, host.fact(fact), "fact %s is wrong" % fact)
|
79
|
+
assert_equal(value, host.fact(fact)[0].value, "fact %s is wrong" % fact)
|
81
80
|
end
|
82
81
|
assert_equal(facts["ipaddress"], host.ip, "IP did not get set")
|
83
82
|
|
@@ -122,7 +121,8 @@ class TestRailsHost < Test::Unit::TestCase
|
|
122
121
|
# And change some facts
|
123
122
|
facts["test2"] = "yaytest"
|
124
123
|
facts["test3"] = "funtest"
|
125
|
-
facts
|
124
|
+
facts["test1"] = "changedfact"
|
125
|
+
facts.delete("ipaddress")
|
126
126
|
host = nil
|
127
127
|
assert_nothing_raised {
|
128
128
|
host = Puppet::Rails::Host.store(
|
@@ -138,9 +138,9 @@ class TestRailsHost < Test::Unit::TestCase
|
|
138
138
|
assert_instance_of(Time, host.last_compile, "did not set last_compile")
|
139
139
|
end
|
140
140
|
|
141
|
-
|
141
|
+
assert_equal(0, host.fact('ipaddress').size, "removed fact was not deleted")
|
142
142
|
facts.each do |fact, value|
|
143
|
-
assert_equal(value, host.fact(fact), "fact %s is wrong" % fact)
|
143
|
+
assert_equal(value, host.fact(fact)[0].value, "fact %s is wrong" % fact)
|
144
144
|
end
|
145
145
|
|
146
146
|
# And check the changes we made.
|
@@ -151,27 +151,52 @@ class TestRailsHost < Test::Unit::TestCase
|
|
151
151
|
assert(res, "New resource was not added")
|
152
152
|
assert_equal("user_added", res.parameter("owner"), "user info was not stored")
|
153
153
|
|
154
|
-
|
155
|
-
# I expect it's a caching problem.
|
156
|
-
count = 0
|
157
|
-
host.resources.find(:all).find_all { |r| r.title =~ /file2/ }.each do |r|
|
158
|
-
r.save
|
159
|
-
puts "%s => %s" % [r.ref, r.parameters.inspect]
|
154
|
+
host.resources.find(:all, :conditions => [ "title like ?", "%file2%"]).each do |r|
|
160
155
|
assert_equal("notice", r.parameter("loglevel"),
|
161
156
|
"loglevel was not added")
|
162
|
-
case r.restype
|
163
|
-
when "file":
|
164
|
-
assert_equal("fake", r.parameter("owner"), "owner was not modified")
|
165
|
-
when "exec":
|
166
|
-
assert_equal("fake", r.parameter("user"), "user was not modified")
|
167
|
-
else
|
168
|
-
raise "invalid resource type %s" % r.restype
|
169
|
-
end
|
170
157
|
end
|
171
158
|
end
|
172
|
-
|
173
|
-
|
159
|
+
|
160
|
+
def test_freshness_connect_update
|
161
|
+
Puppet::Rails.init
|
162
|
+
Puppet[:storeconfigs] = true
|
163
|
+
|
164
|
+
# this is the default server setup
|
165
|
+
master = Puppet::Network::Handler.master.new(
|
166
|
+
:Code => "",
|
167
|
+
:UseNodes => true,
|
168
|
+
:Local => true
|
169
|
+
)
|
170
|
+
|
171
|
+
# Create a host
|
172
|
+
Puppet::Rails::Host.new(:name => "test", :ip => "192.168.0.3").save
|
173
|
+
|
174
|
+
assert_nothing_raised("Failed to update last_connect for unknown host") do
|
175
|
+
master.freshness("created",'192.168.0.1')
|
176
|
+
end
|
177
|
+
|
178
|
+
# Make sure it created the host
|
179
|
+
created = Puppet::Rails::Host.find_by_name("created")
|
180
|
+
assert(created, "Freshness did not create host")
|
181
|
+
assert(created.last_freshcheck,
|
182
|
+
"Did not set last_freshcheck on created host")
|
183
|
+
assert_equal("192.168.0.1", created.ip,
|
184
|
+
"Did not set IP address on created host")
|
185
|
+
|
186
|
+
# Now check on the existing host
|
187
|
+
assert_nothing_raised("Failed to update last_connect for unknown host") do
|
188
|
+
master.freshness("test",'192.168.0.2')
|
189
|
+
end
|
190
|
+
|
191
|
+
# Recreate it, so we're not using the cached object.
|
192
|
+
host = Puppet::Rails::Host.find_by_name("test")
|
193
|
+
|
194
|
+
# Make sure it created the host
|
195
|
+
assert(host.last_freshcheck,
|
196
|
+
"Did not set last_freshcheck on existing host")
|
197
|
+
assert_equal("192.168.0.3", host.ip,
|
198
|
+
"Overrode IP on found host")
|
174
199
|
end
|
175
200
|
end
|
176
201
|
|
177
|
-
# $Id: host.rb
|
202
|
+
# $Id: host.rb 2616 2007-06-18 21:03:18Z luke $
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
|
+
|
5
|
+
require 'puppettest'
|
6
|
+
require 'puppet/parser/interpreter'
|
7
|
+
require 'puppet/parser/parser'
|
8
|
+
require 'puppet/network/client'
|
9
|
+
require 'puppet/rails'
|
10
|
+
require 'puppettest/resourcetesting'
|
11
|
+
require 'puppettest/parsertesting'
|
12
|
+
require 'puppettest/servertest'
|
13
|
+
require 'puppettest/railstesting'
|
14
|
+
|
15
|
+
|
16
|
+
class InterpreterRailsTests < PuppetTest::TestCase
|
17
|
+
include PuppetTest
|
18
|
+
include PuppetTest::ServerTest
|
19
|
+
include PuppetTest::ParserTesting
|
20
|
+
include PuppetTest::ResourceTesting
|
21
|
+
include PuppetTest::RailsTesting
|
22
|
+
AST = Puppet::Parser::AST
|
23
|
+
NodeDef = Puppet::Parser::Interpreter::NodeDef
|
24
|
+
confine "No rails support" => Puppet.features.rails?
|
25
|
+
|
26
|
+
# We need to make sure finished objects are stored in the db.
|
27
|
+
def test_finish_before_store
|
28
|
+
railsinit
|
29
|
+
interp = mkinterp
|
30
|
+
|
31
|
+
node = interp.newnode ["myhost"], :code => AST::ASTArray.new(:children => [
|
32
|
+
resourcedef("file", "/tmp/yay", :group => "root"),
|
33
|
+
defaultobj("file", :owner => "root")
|
34
|
+
])
|
35
|
+
|
36
|
+
interp.newclass "myclass", :code => AST::ASTArray.new(:children => [
|
37
|
+
])
|
38
|
+
|
39
|
+
interp.newclass "sub", :parent => "myclass",
|
40
|
+
:code => AST::ASTArray.new(:children => [
|
41
|
+
resourceoverride("file", "/tmp/yay", :owner => "root")
|
42
|
+
]
|
43
|
+
)
|
44
|
+
|
45
|
+
# Now do the rails crap
|
46
|
+
Puppet[:storeconfigs] = true
|
47
|
+
|
48
|
+
interp.evaluate("myhost", {})
|
49
|
+
|
50
|
+
# And then retrieve the object from rails
|
51
|
+
#res = Puppet::Rails::Resource.find_by_restype_and_title("file", "/tmp/yay", :include => {:param_values => :param_names})
|
52
|
+
res = Puppet::Rails::Resource.find_by_restype_and_title("file", "/tmp/yay")
|
53
|
+
|
54
|
+
assert(res, "Did not get resource from rails")
|
55
|
+
|
56
|
+
params = res.parameters
|
57
|
+
|
58
|
+
assert_equal(["root"], params["owner"], "Did not get correct value for owner param")
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_hoststorage
|
62
|
+
assert_nothing_raised {
|
63
|
+
Puppet[:storeconfigs] = true
|
64
|
+
}
|
65
|
+
|
66
|
+
file = tempfile()
|
67
|
+
File.open(file, "w") { |f|
|
68
|
+
f.puts "file { \"/etc\": owner => root }"
|
69
|
+
}
|
70
|
+
|
71
|
+
interp = nil
|
72
|
+
assert_nothing_raised {
|
73
|
+
interp = Puppet::Parser::Interpreter.new(
|
74
|
+
:Manifest => file,
|
75
|
+
:UseNodes => false,
|
76
|
+
:ForkSave => false
|
77
|
+
)
|
78
|
+
}
|
79
|
+
|
80
|
+
facts = {}
|
81
|
+
Facter.each { |fact, val| facts[fact] = val }
|
82
|
+
|
83
|
+
objects = nil
|
84
|
+
assert_nothing_raised {
|
85
|
+
objects = interp.run(facts["hostname"], facts)
|
86
|
+
}
|
87
|
+
|
88
|
+
obj = Puppet::Rails::Host.find_by_name(facts["hostname"])
|
89
|
+
assert(obj, "Could not find host object")
|
90
|
+
end
|
91
|
+
end
|
@@ -12,6 +12,10 @@ if defined? ActiveRecord::Base
|
|
12
12
|
class TestRailsParameter < Test::Unit::TestCase
|
13
13
|
include PuppetTest::RailsTesting
|
14
14
|
|
15
|
+
def params
|
16
|
+
{"myname" => "myval", "multiple" => %w{one two three}}
|
17
|
+
end
|
18
|
+
|
15
19
|
# Create a resource param from a rails parameter
|
16
20
|
def test_to_resourceparam
|
17
21
|
railsinit
|
@@ -19,34 +23,41 @@ class TestRailsParameter < Test::Unit::TestCase
|
|
19
23
|
# Now create a source
|
20
24
|
interp = mkinterp
|
21
25
|
source = interp.newclass "myclass"
|
26
|
+
|
27
|
+
host = Puppet::Rails::Host.new(:name => "myhost")
|
22
28
|
|
23
|
-
|
29
|
+
resource = host.resources.create(
|
30
|
+
:title => "/tmp/to_resource",
|
31
|
+
:restype => "file",
|
32
|
+
:exported => true)
|
24
33
|
|
25
34
|
# Use array and non-array values, to make sure we get things back in
|
26
35
|
# the same form.
|
27
|
-
|
28
|
-
param = Puppet::Rails::ParamName.
|
36
|
+
params.each do |name, value|
|
37
|
+
param = Puppet::Rails::ParamName.find_or_create_by_name(name)
|
29
38
|
if value.is_a? Array
|
30
39
|
values = value
|
31
40
|
else
|
32
41
|
values = [value]
|
33
42
|
end
|
34
43
|
valueobjects = values.collect do |v|
|
35
|
-
|
36
|
-
|
37
|
-
param.param_values << obj
|
38
|
-
end
|
44
|
+
resource.param_values.create(:value => v,
|
45
|
+
:param_name => param)
|
39
46
|
end
|
40
47
|
|
41
48
|
assert(param, "Did not create rails parameter")
|
42
49
|
|
43
50
|
# The id doesn't get assigned until we save
|
44
|
-
|
51
|
+
end
|
52
|
+
|
53
|
+
resource.save
|
45
54
|
|
46
|
-
|
55
|
+
# And try to convert our parameter
|
56
|
+
params.each do |name, value|
|
57
|
+
param = Puppet::Rails::ParamName.find_by_name(name)
|
47
58
|
pp = nil
|
48
59
|
assert_nothing_raised do
|
49
|
-
pp = param.to_resourceparam(source)
|
60
|
+
pp = param.to_resourceparam(resource, source)
|
50
61
|
end
|
51
62
|
|
52
63
|
assert_instance_of(Puppet::Parser::Resource::Param, pp)
|
@@ -59,4 +70,4 @@ else
|
|
59
70
|
$stderr.puts "Install Rails for Rails and Caching tests"
|
60
71
|
end
|
61
72
|
|
62
|
-
# $Id: railsparameter.rb
|
73
|
+
# $Id: railsparameter.rb 2565 2007-06-12 00:31:16Z ballman $
|
data/test/rails/railsresource.rb
CHANGED
@@ -36,9 +36,9 @@ class TestRailsResource < Test::Unit::TestCase
|
|
36
36
|
|
37
37
|
# Now add some params
|
38
38
|
params.each do |param, value|
|
39
|
-
pn =
|
40
|
-
pv =
|
41
|
-
|
39
|
+
pn = Puppet::Rails::ParamName.find_or_create_by_name(param)
|
40
|
+
pv = resource.param_values.create(:value => value,
|
41
|
+
:param_name => pn)
|
42
42
|
end
|
43
43
|
|
44
44
|
host.save
|
@@ -58,7 +58,7 @@ class TestRailsResource < Test::Unit::TestCase
|
|
58
58
|
interp, scope, source = mkclassframing
|
59
59
|
|
60
60
|
# Find the new resource and include all it's parameters.
|
61
|
-
resource = Puppet::Rails::Resource.find_by_id(resource.id
|
61
|
+
resource = Puppet::Rails::Resource.find_by_id(resource.id)
|
62
62
|
|
63
63
|
# Now, try to convert our resource to a real resource
|
64
64
|
res = nil
|
@@ -74,10 +74,12 @@ class TestRailsResource < Test::Unit::TestCase
|
|
74
74
|
|
75
75
|
def test_parameters
|
76
76
|
resource = mktest_resource
|
77
|
-
|
78
77
|
setparams = nil
|
79
78
|
assert_nothing_raised do
|
80
|
-
setparams = resource.parameters
|
79
|
+
setparams = resource.parameters.inject({}) { |h, a|
|
80
|
+
h[a[0]] = a[1][0]
|
81
|
+
h
|
82
|
+
}
|
81
83
|
end
|
82
84
|
assert_equal(params, setparams,
|
83
85
|
"Did not get the right answer from #parameters")
|
@@ -96,5 +98,136 @@ else
|
|
96
98
|
$stderr.puts "Install Rails for Rails and Caching tests"
|
97
99
|
end
|
98
100
|
|
99
|
-
#
|
101
|
+
# A separate class for testing rails integration
|
102
|
+
class TestExportedResources < PuppetTest::TestCase
|
103
|
+
include PuppetTest
|
104
|
+
include PuppetTest::ParserTesting
|
105
|
+
include PuppetTest::ResourceTesting
|
106
|
+
include PuppetTest::RailsTesting
|
107
|
+
Parser = Puppet::Parser
|
108
|
+
AST = Parser::AST
|
109
|
+
Reference = Puppet::Parser::Resource::Reference
|
110
|
+
|
111
|
+
def setup
|
112
|
+
super
|
113
|
+
Puppet[:trace] = false
|
114
|
+
@interp, @scope, @source = mkclassframing
|
115
|
+
end
|
116
|
+
|
117
|
+
confine "Missing rails support" => Puppet.features.rails?
|
118
|
+
|
119
|
+
# Compare a parser resource to a rails resource.
|
120
|
+
def compare_resources(host, res, updating, options = {})
|
121
|
+
newobj = nil
|
122
|
+
|
123
|
+
# If the resource is in the db, then use modify_rails, else use to_rails
|
124
|
+
if newobj = Puppet::Rails::Resource.find_by_restype_and_title(res.type, res.title)
|
125
|
+
assert_nothing_raised("Call to modify_rails failed") do
|
126
|
+
res.modify_rails(newobj)
|
127
|
+
end
|
128
|
+
else
|
129
|
+
assert_nothing_raised("Call to to_rails failed") do
|
130
|
+
newobj = res.to_rails(host)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
assert_instance_of(Puppet::Rails::Resource, newobj)
|
135
|
+
newobj.save
|
136
|
+
|
137
|
+
if updating
|
138
|
+
tail = "on update"
|
139
|
+
else
|
140
|
+
tail = ""
|
141
|
+
end
|
142
|
+
|
143
|
+
# Make sure we find our object and only our object
|
144
|
+
count = 0
|
145
|
+
obj = nil
|
146
|
+
Puppet::Rails::Resource.find(:all).each do |obj|
|
147
|
+
assert_equal(newobj.id, obj.id, "A new resource was created instead of modifying an existing resource")
|
148
|
+
count += 1
|
149
|
+
[:title, :restype, :line, :exported].each do |param|
|
150
|
+
if param == :restype
|
151
|
+
method = :type
|
152
|
+
else
|
153
|
+
method = param
|
154
|
+
end
|
155
|
+
assert_equal(res.send(method), obj[param],
|
156
|
+
"attribute %s was not set correctly in rails %s" % [param, tail])
|
157
|
+
end
|
158
|
+
end
|
159
|
+
assert_equal(1, count, "Got too many resources %s" % tail)
|
160
|
+
# Now make sure we can find it again
|
161
|
+
assert_nothing_raised do
|
162
|
+
obj = Puppet::Rails::Resource.find_by_restype_and_title(
|
163
|
+
res.type, res.title, :include => :param_names
|
164
|
+
)
|
165
|
+
end
|
166
|
+
assert_instance_of(Puppet::Rails::Resource, obj)
|
167
|
+
|
168
|
+
# Make sure we get the parameters back
|
169
|
+
params = options[:params] || [obj.param_names.collect { |p| p.name },
|
170
|
+
res.to_hash.keys].flatten.collect { |n| n.to_s }.uniq
|
171
|
+
|
172
|
+
params.each do |name|
|
173
|
+
param = obj.param_names.find_by_name(name)
|
174
|
+
if res[name]
|
175
|
+
assert(param, "resource did not keep %s %s" % [name, tail])
|
176
|
+
else
|
177
|
+
assert(! param, "resource did not delete %s %s" % [name, tail])
|
178
|
+
end
|
179
|
+
if param
|
180
|
+
values = param.param_values.collect { |pv| pv.value }
|
181
|
+
should = res[param.name]
|
182
|
+
should = [should] unless should.is_a?(Array)
|
183
|
+
assert_equal(should, values,
|
184
|
+
"%s was different %s" % [param.name, tail])
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_to_rails
|
190
|
+
railsteardown
|
191
|
+
railsinit
|
192
|
+
ref1 = Reference.new :type => "exec", :title => "one"
|
193
|
+
ref2 = Reference.new :type => "exec", :title => "two"
|
194
|
+
res = mkresource :type => "file", :title => "/tmp/testing",
|
195
|
+
:source => @source, :scope => @scope,
|
196
|
+
:params => {:owner => "root", :source => ["/tmp/A", "/tmp/B"],
|
197
|
+
:mode => "755", :require => [ref1, ref2]}
|
198
|
+
|
199
|
+
res.line = 50
|
200
|
+
|
201
|
+
# We also need a Rails Host to store under
|
202
|
+
host = Puppet::Rails::Host.new(:name => Facter.hostname)
|
203
|
+
|
204
|
+
compare_resources(host, res, false, :params => %w{owner source mode})
|
205
|
+
|
206
|
+
# Now make sure our parameters did not change
|
207
|
+
assert_instance_of(Array, res[:require], "Parameter array changed")
|
208
|
+
res[:require].each do |ref|
|
209
|
+
assert_instance_of(Reference, ref, "Resource reference changed")
|
210
|
+
end
|
211
|
+
|
212
|
+
# Now make some changes to our resource. We're removing the mode,
|
213
|
+
# changing the source, and adding 'check'.
|
214
|
+
res = mkresource :type => "file", :title => "/tmp/testing",
|
215
|
+
:source => @source, :scope => @scope,
|
216
|
+
:params => {:owner => "bin", :source => ["/tmp/A", "/tmp/C"],
|
217
|
+
:check => "checksum", :require => [ref1, ref2]}
|
218
|
+
|
219
|
+
res.line = 75
|
220
|
+
res.exported = true
|
221
|
+
|
222
|
+
compare_resources(host, res, true, :params => %w{owner source mode check})
|
223
|
+
|
224
|
+
# Again make sure our parameters did not change
|
225
|
+
assert_instance_of(Array, res[:require], "Parameter array changed")
|
226
|
+
res[:require].each do |ref|
|
227
|
+
assert_instance_of(Reference, ref, "Resource reference changed")
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
# $Id: railsresource.rb 2597 2007-06-17 21:41:50Z luke $
|
100
233
|
|