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/lib/puppettest.rb
CHANGED
@@ -118,6 +118,19 @@ module PuppetTest
|
|
118
118
|
$0 =~ /test_loader/
|
119
119
|
end
|
120
120
|
|
121
|
+
# Redirect stdout and stderr
|
122
|
+
def redirect
|
123
|
+
@stderr = tempfile
|
124
|
+
@stdout = tempfile
|
125
|
+
$stderr = File.open(@stderr, "w")
|
126
|
+
$stdout = File.open(@stdout, "w")
|
127
|
+
|
128
|
+
cleanup do
|
129
|
+
$stderr = STDERR
|
130
|
+
$stdout = STDOUT
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
121
134
|
def setup
|
122
135
|
@memoryatstart = Puppet::Util.memory
|
123
136
|
if defined? @@testcount
|
@@ -13,10 +13,17 @@ module PuppetTest::ExeTest
|
|
13
13
|
File.join(basedir, "bin")
|
14
14
|
end
|
15
15
|
|
16
|
+
def sbindir
|
17
|
+
File.join(basedir, "sbin")
|
18
|
+
end
|
19
|
+
|
16
20
|
def setbindir
|
17
21
|
unless ENV["PATH"].split(":").include?(bindir)
|
18
22
|
ENV["PATH"] = [bindir, ENV["PATH"]].join(":")
|
19
23
|
end
|
24
|
+
unless ENV["PATH"].split(":").include?(sbindir)
|
25
|
+
ENV["PATH"] = [sbindir, ENV["PATH"]].join(":")
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
def setlibdir
|
@@ -5,12 +5,12 @@ module PuppetTest
|
|
5
5
|
class FakeModel
|
6
6
|
include Puppet::Util
|
7
7
|
class << self
|
8
|
-
attr_accessor :name, :
|
9
|
-
@name = :
|
8
|
+
attr_accessor :name, :realresource
|
9
|
+
@name = :fakeresource
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.namevar
|
13
|
-
@
|
13
|
+
@realresource.namevar
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.validproperties
|
@@ -26,7 +26,7 @@ module PuppetTest
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def [](param)
|
29
|
-
if @
|
29
|
+
if @realresource.attrtype(param) == :property
|
30
30
|
@is[param]
|
31
31
|
else
|
32
32
|
@params[param]
|
@@ -35,11 +35,11 @@ module PuppetTest
|
|
35
35
|
|
36
36
|
def []=(param, value)
|
37
37
|
param = symbolize(param)
|
38
|
-
unless @
|
38
|
+
unless @realresource.validattr?(param)
|
39
39
|
raise Puppet::DevError, "Invalid attribute %s for %s" %
|
40
|
-
[param, @
|
40
|
+
[param, @realresource.name]
|
41
41
|
end
|
42
|
-
if @
|
42
|
+
if @realresource.attrtype(param) == :property
|
43
43
|
@should[param] = value
|
44
44
|
else
|
45
45
|
@params[param] = value
|
@@ -47,12 +47,12 @@ module PuppetTest
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def initialize(name)
|
50
|
-
@
|
51
|
-
raise "Could not find type #{self.class.name}" unless @
|
50
|
+
@realresource = Puppet::Type.type(self.class.name)
|
51
|
+
raise "Could not find type #{self.class.name}" unless @realresource
|
52
52
|
@is = {}
|
53
53
|
@should = {}
|
54
54
|
@params = {}
|
55
|
-
self[@
|
55
|
+
self[@realresource.namevar] = name
|
56
56
|
end
|
57
57
|
|
58
58
|
def inspect
|
@@ -83,9 +83,9 @@ module PuppetTest
|
|
83
83
|
end
|
84
84
|
|
85
85
|
class FakeProvider
|
86
|
-
attr_accessor :
|
86
|
+
attr_accessor :resource
|
87
87
|
class << self
|
88
|
-
attr_accessor :name, :
|
88
|
+
attr_accessor :name, :resource_type, :methods
|
89
89
|
end
|
90
90
|
|
91
91
|
# A very low number, so these never show up as defaults via the standard
|
@@ -96,7 +96,7 @@ module PuppetTest
|
|
96
96
|
|
97
97
|
# Set up methods to fake things
|
98
98
|
def self.apimethods(*ary)
|
99
|
-
@
|
99
|
+
@resource_type.validproperties.each do |property|
|
100
100
|
ary << property unless ary.include? property
|
101
101
|
end
|
102
102
|
attr_accessor(*ary)
|
@@ -114,6 +114,10 @@ module PuppetTest
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
+
def self.source
|
118
|
+
self.name
|
119
|
+
end
|
120
|
+
|
117
121
|
def self.supports_parameter?(param)
|
118
122
|
true
|
119
123
|
end
|
@@ -123,11 +127,18 @@ module PuppetTest
|
|
123
127
|
end
|
124
128
|
|
125
129
|
def clear
|
126
|
-
@
|
130
|
+
@resource = nil
|
127
131
|
end
|
128
132
|
|
129
|
-
def initialize(
|
130
|
-
@
|
133
|
+
def initialize(resource)
|
134
|
+
@resource = resource
|
135
|
+
end
|
136
|
+
|
137
|
+
def properties
|
138
|
+
self.class.resource_type.validproperties.inject({}) do |props, name|
|
139
|
+
props[name] = self.send(name) || :absent
|
140
|
+
props
|
141
|
+
end
|
131
142
|
end
|
132
143
|
end
|
133
144
|
|
@@ -154,30 +165,30 @@ module PuppetTest
|
|
154
165
|
end
|
155
166
|
end
|
156
167
|
|
157
|
-
@@
|
168
|
+
@@fakeresources = {}
|
158
169
|
@@fakeproviders = {}
|
159
170
|
|
160
|
-
def
|
171
|
+
def fakeresource(type, name, options = {})
|
161
172
|
type = type.intern if type.is_a? String
|
162
|
-
unless @@
|
163
|
-
@@
|
164
|
-
@@
|
173
|
+
unless @@fakeresources.include? type
|
174
|
+
@@fakeresources[type] = Class.new(FakeModel)
|
175
|
+
@@fakeresources[type].name = type
|
165
176
|
|
166
|
-
|
167
|
-
raise("Could not find type %s" % type) unless
|
168
|
-
@@
|
177
|
+
resource = Puppet::Type.type(type)
|
178
|
+
raise("Could not find type %s" % type) unless resource
|
179
|
+
@@fakeresources[type].realresource = resource
|
169
180
|
end
|
170
181
|
|
171
|
-
obj = @@
|
182
|
+
obj = @@fakeresources[type].new(name)
|
172
183
|
options.each do |name, val|
|
173
184
|
obj[name] = val
|
174
185
|
end
|
175
186
|
obj
|
176
187
|
end
|
177
188
|
|
178
|
-
module_function :
|
189
|
+
module_function :fakeresource
|
179
190
|
|
180
|
-
def fakeprovider(type,
|
191
|
+
def fakeprovider(type, resource)
|
181
192
|
type = type.intern if type.is_a? String
|
182
193
|
unless @@fakeproviders.include? type
|
183
194
|
@@fakeproviders[type] = Class.new(FakeModel) do
|
@@ -185,7 +196,7 @@ module PuppetTest
|
|
185
196
|
end
|
186
197
|
end
|
187
198
|
|
188
|
-
@@fakeproviders[type].new(
|
199
|
+
@@fakeproviders[type].new(resource)
|
189
200
|
end
|
190
201
|
|
191
202
|
module_function :fakeprovider
|
@@ -34,8 +34,8 @@ module PuppetTest
|
|
34
34
|
FileUtils.rm(filename)
|
35
35
|
end
|
36
36
|
|
37
|
-
def assert_rollback_events(
|
38
|
-
run_events(:rollback,
|
37
|
+
def assert_rollback_events(trans, events, msg = nil)
|
38
|
+
run_events(:rollback, trans, events, msg)
|
39
39
|
end
|
40
40
|
|
41
41
|
def assert_events(events, *items)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
module PuppetTest::Support::Collection
|
3
|
+
def run_collection_queries(form)
|
4
|
+
{true => [%{title == "/tmp/testing"}, %{(title == "/tmp/testing")},
|
5
|
+
%{title == "/tmp/testing" and group == bin}, %{title == bin or group == bin},
|
6
|
+
%{title == "/tmp/testing" or title == bin}, %{title == "/tmp/testing"},
|
7
|
+
%{(title == "/tmp/testing" or title == bin) and group == bin}],
|
8
|
+
false => [%{title == bin}, %{title == bin or (title == bin and group == bin)},
|
9
|
+
%{title != "/tmp/testing"}, %{title != "/tmp/testing" and group != bin}]
|
10
|
+
}.each do |res, ary|
|
11
|
+
ary.each do |str|
|
12
|
+
if form == :virtual
|
13
|
+
code = "File <| #{str} |>"
|
14
|
+
else
|
15
|
+
code = "File <<| #{str} |>>"
|
16
|
+
end
|
17
|
+
parser = mkparser
|
18
|
+
query = nil
|
19
|
+
|
20
|
+
assert_nothing_raised("Could not parse '#{str}'") do
|
21
|
+
query = parser.parse(code)[0].query
|
22
|
+
end
|
23
|
+
|
24
|
+
yield str, res, query
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# $Id: collection.rb 2597 2007-06-17 21:41:50Z luke $
|
data/test/network/client/ca.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
4
|
|
5
|
+
require 'mocha'
|
5
6
|
require 'puppettest'
|
6
7
|
require 'puppet/network/client/ca'
|
7
8
|
require 'puppet/sslcertificates/support'
|
@@ -33,6 +34,31 @@ class TestClientCA < Test::Unit::TestCase
|
|
33
34
|
client = Puppet::Network::Client.ca.new
|
34
35
|
end
|
35
36
|
end
|
37
|
+
|
38
|
+
# #578
|
39
|
+
def test_invalid_certs_are_not_written
|
40
|
+
# Run the get once, which should be valid
|
41
|
+
|
42
|
+
assert_nothing_raised("Could not get a certificate") do
|
43
|
+
@client.request_cert
|
44
|
+
end
|
45
|
+
|
46
|
+
# Now remove the cert and keys, so we get a broken cert
|
47
|
+
File.unlink(Puppet[:hostcert])
|
48
|
+
File.unlink(Puppet[:localcacert])
|
49
|
+
File.unlink(Puppet[:hostprivkey])
|
50
|
+
|
51
|
+
@client = Puppet::Network::Client.ca.new :CA => @ca
|
52
|
+
@ca.expects(:getcert).returns("yay") # not a valid cert
|
53
|
+
# Now make sure it fails, since we'll get the old cert but have new keys
|
54
|
+
assert_raise(Puppet::Network::Client::CA::InvalidCertificate, "Did not fail on invalid cert") do
|
55
|
+
@client.request_cert
|
56
|
+
end
|
57
|
+
|
58
|
+
# And then make sure the cert isn't written to disk
|
59
|
+
assert(! FileTest.exists?(Puppet[:hostcert]),
|
60
|
+
"Invalid cert got written to disk")
|
61
|
+
end
|
36
62
|
end
|
37
63
|
|
38
|
-
# $Id: ca.rb
|
64
|
+
# $Id: ca.rb 2612 2007-06-18 19:51:17Z luke $
|
@@ -115,7 +115,7 @@ class TestClient < Test::Unit::TestCase
|
|
115
115
|
Puppet[:ssldir] = confdir
|
116
116
|
Puppet.config.mkdir(:ssldir)
|
117
117
|
Puppet.config.clearused
|
118
|
-
Puppet.config.use(:
|
118
|
+
Puppet.config.use(:ssl, :ca)
|
119
119
|
|
120
120
|
mkserver
|
121
121
|
|
@@ -216,7 +216,7 @@ class TestClient < Test::Unit::TestCase
|
|
216
216
|
|
217
217
|
# Make sure we get a client class for each handler type.
|
218
218
|
def test_loading_all_clients
|
219
|
-
%w{ca dipper file
|
219
|
+
%w{ca dipper file master report resource runner status}.each do |name|
|
220
220
|
client = nil
|
221
221
|
assert_nothing_raised do
|
222
222
|
client = Puppet::Network::Client.client(name)
|
@@ -256,4 +256,4 @@ class TestClient < Test::Unit::TestCase
|
|
256
256
|
end
|
257
257
|
end
|
258
258
|
|
259
|
-
# $Id: client.rb
|
259
|
+
# $Id: client.rb 2497 2007-05-09 16:21:56Z luke $
|
@@ -3,6 +3,7 @@
|
|
3
3
|
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
4
|
|
5
5
|
require 'puppettest'
|
6
|
+
require 'mocha'
|
6
7
|
|
7
8
|
class TestMasterClient < Test::Unit::TestCase
|
8
9
|
include PuppetTest::ServerTest
|
@@ -622,6 +623,106 @@ end
|
|
622
623
|
assert(! master.send(:lockfile).locked?,
|
623
624
|
"Master is still locked after failure")
|
624
625
|
end
|
626
|
+
|
627
|
+
# Make sure we get a value for timeout
|
628
|
+
def test_config_timeout
|
629
|
+
master = Puppet::Network::Client.client(:master)
|
630
|
+
time = Integer(Puppet[:configtimeout])
|
631
|
+
assert_equal(time, master.timeout, "Did not get default value for timeout")
|
632
|
+
assert_equal(time, master.timeout, "Did not get default value for timeout on second run")
|
633
|
+
|
634
|
+
# Reset it
|
635
|
+
Puppet[:configtimeout] = "50"
|
636
|
+
assert_equal(50, master.timeout, "Did not get changed default value for timeout")
|
637
|
+
assert_equal(50, master.timeout, "Did not get changed default value for timeout on second run")
|
638
|
+
|
639
|
+
# Now try an integer
|
640
|
+
Puppet[:configtimeout] = 100
|
641
|
+
assert_equal(100, master.timeout, "Did not get changed integer default value for timeout")
|
642
|
+
assert_equal(100, master.timeout, "Did not get changed integer default value for timeout on second run")
|
643
|
+
end
|
644
|
+
|
645
|
+
# #569 -- Make sure we can ignore dynamic facts.
|
646
|
+
def test_dynamic_facts
|
647
|
+
client = mkclient
|
648
|
+
|
649
|
+
assert_equal(%w{memorysize memoryfree swapsize swapfree}, client.class.dynamic_facts,
|
650
|
+
"Did not get correct defaults for dynamic facts")
|
651
|
+
|
652
|
+
# Cache some values for comparison
|
653
|
+
cached = {"one" => "yep", "two" => "nope"}
|
654
|
+
Puppet::Util::Storage.cache(:configuration)[:facts] = cached
|
655
|
+
|
656
|
+
assert(! client.send(:facts_changed?, cached), "Facts incorrectly considered to be changed")
|
657
|
+
|
658
|
+
# Now add some values to the passed result and make sure we get a positive
|
659
|
+
newfacts = cached.dup
|
660
|
+
newfacts["changed"] = "something"
|
661
|
+
|
662
|
+
assert(client.send(:facts_changed?, newfacts), "Did not catch changed fact")
|
663
|
+
|
664
|
+
# Now add a dynamic fact and make sure it's ignored
|
665
|
+
newfacts = cached.dup
|
666
|
+
newfacts["memorysize"] = "something"
|
667
|
+
|
668
|
+
assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
|
669
|
+
|
670
|
+
# And try it with both
|
671
|
+
cached["memorysize"] = "something else"
|
672
|
+
assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
|
673
|
+
|
674
|
+
# And finally, with only in the cache
|
675
|
+
newfacts.delete("memorysize")
|
676
|
+
assert(! client.send(:facts_changed?, newfacts), "Dynamic facts resulted in a false positive")
|
677
|
+
end
|
678
|
+
|
679
|
+
def test_splay
|
680
|
+
client = mkclient
|
681
|
+
|
682
|
+
# Make sure we default to no splay
|
683
|
+
client.expects(:sleep).never
|
684
|
+
|
685
|
+
assert_nothing_raised("Failed to call splay") do
|
686
|
+
client.send(:splay)
|
687
|
+
end
|
688
|
+
|
689
|
+
# Now set it to true and make sure we get the right value
|
690
|
+
client = mkclient
|
691
|
+
client.expects(:sleep)
|
692
|
+
|
693
|
+
Puppet[:splay] = true
|
694
|
+
assert_nothing_raised("Failed to call sleep when splay is true") do
|
695
|
+
client.send(:splay)
|
696
|
+
end
|
697
|
+
|
698
|
+
time = Puppet::Util::Storage.cache(:configuration)[:splay_time]
|
699
|
+
assert(time, "Splay time was not cached")
|
700
|
+
|
701
|
+
# Now try it again
|
702
|
+
client = mkclient
|
703
|
+
client.expects(:sleep).with(time)
|
704
|
+
|
705
|
+
assert_nothing_raised("Failed to call sleep when splay is true with a cached value") do
|
706
|
+
client.send(:splay)
|
707
|
+
end
|
708
|
+
end
|
709
|
+
|
710
|
+
# This is partially to fix #532, but also to save on memory.
|
711
|
+
def test_remove_objects_after_every_run
|
712
|
+
client = mkclient
|
713
|
+
|
714
|
+
ftype = Puppet::Type.type(:file)
|
715
|
+
|
716
|
+
assert_nil(ftype[@createdfile], "file object already exists")
|
717
|
+
assert(! FileTest.exists?(@createdfile), "File already exists on disk")
|
718
|
+
|
719
|
+
assert_nothing_raised("Could not apply config") do
|
720
|
+
client.run
|
721
|
+
end
|
722
|
+
|
723
|
+
assert(FileTest.exists?(@createdfile), "File does not exist on disk")
|
724
|
+
assert_nil(ftype[@createdfile], "file object was not removed from memory")
|
725
|
+
end
|
625
726
|
end
|
626
727
|
|
627
|
-
# $Id: master.rb
|
728
|
+
# $Id: master.rb 2545 2007-05-31 22:47:01Z luke $
|
data/test/network/handler/ca.rb
CHANGED
@@ -229,6 +229,40 @@ class TestCA < Test::Unit::TestCase
|
|
229
229
|
# And try a different host
|
230
230
|
assert(! caserv.autosign?("other.yay.com"), "Host was autosigned")
|
231
231
|
end
|
232
|
+
|
233
|
+
# Make sure that a CSR created with keys that don't match the existing
|
234
|
+
# cert throws an exception on the server.
|
235
|
+
def test_mismatched_public_keys_throws_exception
|
236
|
+
ca = Puppet::Network::Handler.ca.new()
|
237
|
+
|
238
|
+
# First initialize the server
|
239
|
+
client = Puppet::Network::Client.ca.new :CA => ca
|
240
|
+
client.request_cert
|
241
|
+
File.unlink(Puppet[:hostcsr])
|
242
|
+
|
243
|
+
# Now use a different cert name
|
244
|
+
Puppet[:certname] = "my.host.com"
|
245
|
+
client = Puppet::Network::Client.ca.new :CA => ca
|
246
|
+
firstcsr = client.csr
|
247
|
+
File.unlink(Puppet[:hostcsr]) if FileTest.exists?(Puppet[:hostcsr])
|
248
|
+
|
249
|
+
assert_nothing_raised("Could not get cert") do
|
250
|
+
ca.getcert(firstcsr.to_s)
|
251
|
+
end
|
252
|
+
|
253
|
+
# Now get rid of the public key, forcing a new csr
|
254
|
+
File.unlink(Puppet[:hostprivkey])
|
255
|
+
|
256
|
+
client = Puppet::Network::Client.ca.new :CA => ca
|
257
|
+
|
258
|
+
second_csr = client.csr
|
259
|
+
|
260
|
+
assert(firstcsr.to_s != second_csr.to_s, "CSR did not change")
|
261
|
+
|
262
|
+
assert_raise(Puppet::Error, "CA allowed mismatched keys") do
|
263
|
+
ca.getcert(second_csr.to_s)
|
264
|
+
end
|
265
|
+
end
|
232
266
|
end
|
233
267
|
|
234
|
-
# $Id: ca.rb
|
268
|
+
# $Id: ca.rb 2612 2007-06-18 19:51:17Z luke $
|