puppet 0.22.4 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/lib/puppet/type/user.rb
CHANGED
|
@@ -22,7 +22,7 @@ module Puppet
|
|
|
22
22
|
"The provider can modify user passwords, by accepting a password
|
|
23
23
|
hash."
|
|
24
24
|
|
|
25
|
-
newproperty(:ensure) do
|
|
25
|
+
newproperty(:ensure, :parent => Puppet::Property::Ensure) do
|
|
26
26
|
newvalue(:present, :event => :user_created) do
|
|
27
27
|
provider.create
|
|
28
28
|
end
|
|
@@ -36,49 +36,30 @@ module Puppet
|
|
|
36
36
|
# If they're talking about the thing at all, they generally want to
|
|
37
37
|
# say it should exist.
|
|
38
38
|
defaultto do
|
|
39
|
-
if @
|
|
39
|
+
if @resource.managed?
|
|
40
40
|
:present
|
|
41
41
|
else
|
|
42
42
|
nil
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def change_to_s
|
|
47
|
-
begin
|
|
48
|
-
if @is == :absent
|
|
49
|
-
return "created"
|
|
50
|
-
elsif self.should == :absent
|
|
51
|
-
return "removed"
|
|
52
|
-
else
|
|
53
|
-
return "%s changed '%s' to '%s'" %
|
|
54
|
-
[self.name, self.is_to_s, self.should_to_s]
|
|
55
|
-
end
|
|
56
|
-
rescue Puppet::Error, Puppet::DevError
|
|
57
|
-
raise
|
|
58
|
-
rescue => detail
|
|
59
|
-
raise Puppet::DevError,
|
|
60
|
-
"Could not convert change %s to string: %s" %
|
|
61
|
-
[self.name, detail]
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
46
|
def retrieve
|
|
66
47
|
if provider.exists?
|
|
67
|
-
|
|
48
|
+
return :present
|
|
68
49
|
else
|
|
69
|
-
|
|
50
|
+
return :absent
|
|
70
51
|
end
|
|
71
52
|
end
|
|
72
53
|
|
|
73
54
|
# The default 'sync' method only selects among a list of registered
|
|
74
55
|
# values.
|
|
75
56
|
def sync
|
|
76
|
-
if self.insync?
|
|
77
|
-
self.info "already in sync"
|
|
78
|
-
return nil
|
|
57
|
+
# if self.insync?
|
|
58
|
+
# self.info "already in sync"
|
|
59
|
+
# return nil
|
|
79
60
|
#else
|
|
80
61
|
#self.info "%s vs %s" % [self.is.inspect, self.should.inspect]
|
|
81
|
-
|
|
62
|
+
# end
|
|
82
63
|
unless self.class.values
|
|
83
64
|
self.devfail "No values defined for %s" %
|
|
84
65
|
self.class.name
|
|
@@ -177,7 +158,7 @@ module Puppet
|
|
|
177
158
|
end
|
|
178
159
|
|
|
179
160
|
newproperty(:password, :required_features => :manages_passwords) do
|
|
180
|
-
desc "The user's password, in whatever encrypted format the local machine requires."
|
|
161
|
+
desc "The user's password, in whatever encrypted format the local machine requires. Be sure to enclose any value that includes a dollar sign ($) in single quotes (\')."
|
|
181
162
|
end
|
|
182
163
|
|
|
183
164
|
newproperty(:groups) do
|
|
@@ -185,54 +166,52 @@ module Puppet
|
|
|
185
166
|
group should not be listed. Multiple groups should be
|
|
186
167
|
specified as an array."
|
|
187
168
|
|
|
188
|
-
def should_to_s
|
|
169
|
+
def should_to_s(newvalue)
|
|
189
170
|
self.should
|
|
190
171
|
end
|
|
191
172
|
|
|
192
|
-
def is_to_s
|
|
193
|
-
|
|
173
|
+
def is_to_s(currentvalue)
|
|
174
|
+
currentvalue.join(",")
|
|
194
175
|
end
|
|
195
176
|
|
|
196
177
|
# We need to override this because the groups need to
|
|
197
178
|
# be joined with commas
|
|
198
179
|
def should
|
|
199
|
-
|
|
200
|
-
retrieve
|
|
201
|
-
end
|
|
180
|
+
current_value = retrieve
|
|
202
181
|
|
|
203
182
|
unless defined? @should and @should
|
|
204
183
|
return nil
|
|
205
184
|
end
|
|
206
185
|
|
|
207
|
-
if @
|
|
186
|
+
if @resource[:membership] == :inclusive
|
|
208
187
|
return @should.sort.join(",")
|
|
209
188
|
else
|
|
210
189
|
members = @should
|
|
211
|
-
if
|
|
212
|
-
members +=
|
|
190
|
+
if current_value.is_a?(Array)
|
|
191
|
+
members += current_value
|
|
213
192
|
end
|
|
214
193
|
return members.uniq.sort.join(",")
|
|
215
194
|
end
|
|
216
195
|
end
|
|
217
196
|
|
|
218
197
|
def retrieve
|
|
219
|
-
if tmp = provider.groups
|
|
220
|
-
|
|
198
|
+
if tmp = provider.groups and tmp != :absent
|
|
199
|
+
return tmp.split(",")
|
|
221
200
|
else
|
|
222
|
-
|
|
201
|
+
return :absent
|
|
223
202
|
end
|
|
224
203
|
end
|
|
225
204
|
|
|
226
|
-
def insync?
|
|
205
|
+
def insync?(is)
|
|
227
206
|
unless defined? @should and @should
|
|
228
207
|
return true
|
|
229
208
|
end
|
|
230
|
-
unless defined?
|
|
209
|
+
unless defined? is and is
|
|
231
210
|
return true
|
|
232
211
|
end
|
|
233
|
-
tmp =
|
|
234
|
-
if
|
|
235
|
-
tmp =
|
|
212
|
+
tmp = is
|
|
213
|
+
if is.is_a? Array
|
|
214
|
+
tmp = is.sort.join(",")
|
|
236
215
|
end
|
|
237
216
|
|
|
238
217
|
return tmp == self.should
|
|
@@ -343,38 +322,26 @@ module Puppet
|
|
|
343
322
|
autos
|
|
344
323
|
end
|
|
345
324
|
|
|
346
|
-
def self.list_by_name
|
|
347
|
-
users = []
|
|
348
|
-
defaultprovider.listbyname do |user|
|
|
349
|
-
users << user
|
|
350
|
-
end
|
|
351
|
-
return users
|
|
352
|
-
end
|
|
353
|
-
|
|
354
|
-
def self.list
|
|
355
|
-
defaultprovider.list
|
|
356
|
-
|
|
357
|
-
self.collect do |user|
|
|
358
|
-
user
|
|
359
|
-
end
|
|
360
|
-
end
|
|
361
|
-
|
|
362
325
|
def retrieve
|
|
363
326
|
absent = false
|
|
364
|
-
properties().
|
|
327
|
+
properties().inject({}) { |prophash, property|
|
|
328
|
+
current_value = :absent
|
|
329
|
+
|
|
365
330
|
if absent
|
|
366
|
-
|
|
331
|
+
prophash[property] = :absent
|
|
367
332
|
else
|
|
368
|
-
property.retrieve
|
|
333
|
+
current_value = property.retrieve
|
|
334
|
+
prophash[property] = current_value
|
|
369
335
|
end
|
|
370
336
|
|
|
371
|
-
if property.name == :ensure and
|
|
337
|
+
if property.name == :ensure and current_value == :absent
|
|
372
338
|
absent = true
|
|
373
|
-
next
|
|
339
|
+
# next
|
|
374
340
|
end
|
|
341
|
+
prophash
|
|
375
342
|
}
|
|
376
343
|
end
|
|
377
344
|
end
|
|
378
345
|
end
|
|
379
346
|
|
|
380
|
-
# $Id: user.rb
|
|
347
|
+
# $Id: user.rb 2571 2007-06-13 20:01:34Z ajax $
|
data/lib/puppet/type/yumrepo.rb
CHANGED
|
@@ -2,35 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
require 'puppet/propertychange'
|
|
4
4
|
require 'puppet/util/inifile'
|
|
5
|
-
require 'puppet/type/parsedtype'
|
|
6
5
|
|
|
7
6
|
module Puppet
|
|
8
7
|
# A property for one entry in a .ini-style file
|
|
9
8
|
class IniProperty < Puppet::Property
|
|
10
|
-
def insync?
|
|
9
|
+
def insync?(is)
|
|
11
10
|
# A should property of :absent is the same as nil
|
|
12
11
|
if is.nil? && (should.nil? || should == :absent)
|
|
13
12
|
return true
|
|
14
13
|
end
|
|
15
|
-
return super
|
|
14
|
+
return super(is)
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
def sync
|
|
19
|
-
if insync?
|
|
18
|
+
if insync?(retrieve)
|
|
20
19
|
result = nil
|
|
21
20
|
else
|
|
22
21
|
result = set(self.should)
|
|
23
22
|
if should == :absent
|
|
24
|
-
|
|
23
|
+
resource.section[inikey] = nil
|
|
25
24
|
else
|
|
26
|
-
|
|
25
|
+
resource.section[inikey] = should
|
|
27
26
|
end
|
|
28
27
|
end
|
|
29
28
|
return result
|
|
30
29
|
end
|
|
31
30
|
|
|
32
31
|
def retrieve
|
|
33
|
-
|
|
32
|
+
return resource.section[inikey]
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
def inikey
|
|
@@ -81,19 +80,19 @@ module Puppet
|
|
|
81
80
|
# Where to put files for brand new sections
|
|
82
81
|
@defaultrepodir = nil
|
|
83
82
|
|
|
84
|
-
def self.
|
|
83
|
+
def self.instances
|
|
85
84
|
l = []
|
|
86
85
|
check = validproperties
|
|
87
86
|
clear
|
|
88
87
|
inifile.each_section do |s|
|
|
89
88
|
next if s.name == "main"
|
|
90
89
|
obj = create(:name => s.name, :check => check)
|
|
91
|
-
obj.retrieve
|
|
90
|
+
current_values = obj.retrieve
|
|
92
91
|
obj.eachproperty do |property|
|
|
93
|
-
if property.
|
|
92
|
+
if current_values[property].nil?
|
|
94
93
|
obj.delete(property.name)
|
|
95
94
|
else
|
|
96
|
-
property.should = property
|
|
95
|
+
property.should = current_values[property]
|
|
97
96
|
end
|
|
98
97
|
end
|
|
99
98
|
obj.delete(:check)
|
|
@@ -210,7 +209,7 @@ module Puppet
|
|
|
210
209
|
class << changes[-1]
|
|
211
210
|
def go
|
|
212
211
|
result = super
|
|
213
|
-
self.property.
|
|
212
|
+
self.property.resource.store
|
|
214
213
|
return result
|
|
215
214
|
end
|
|
216
215
|
end
|
|
@@ -332,6 +331,22 @@ module Puppet
|
|
|
332
331
|
newvalue(%r{[0-9]+}) { }
|
|
333
332
|
end
|
|
334
333
|
|
|
334
|
+
newproperty(:protect, :parent => Puppet::IniProperty) do
|
|
335
|
+
desc "Enable or disable protection for this repository. Requires
|
|
336
|
+
that the protectbase plugin is installed and enabled.
|
|
337
|
+
#{ABSENT_DOC}"
|
|
338
|
+
newvalue(:absent) { self.should = :absent }
|
|
339
|
+
newvalue(%r{(0|1)}) { }
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
newproperty(:priority, :parent => Puppet::IniProperty) do
|
|
343
|
+
desc "Priority of this repository from 1-99. Requires that
|
|
344
|
+
the priorities plugin is installed and enabled.
|
|
345
|
+
#{ABSENT_DOC}"
|
|
346
|
+
newvalue(:absent) { self.should = :absent }
|
|
347
|
+
newvalue(%r{[1-9][0-9]?}) { }
|
|
348
|
+
end
|
|
349
|
+
|
|
335
350
|
|
|
336
351
|
|
|
337
352
|
end
|
data/lib/puppet/type/zone.rb
CHANGED
|
@@ -15,23 +15,25 @@ Puppet::Type.newtype(:zone) do
|
|
|
15
15
|
class ZoneMultiConfigProperty < ZoneConfigProperty
|
|
16
16
|
def configtext
|
|
17
17
|
list = @should
|
|
18
|
+
|
|
19
|
+
current_value = self.retrieve
|
|
18
20
|
|
|
19
|
-
unless
|
|
20
|
-
if
|
|
21
|
-
list +=
|
|
21
|
+
unless current_value.is_a? Symbol
|
|
22
|
+
if current_value.is_a? Array
|
|
23
|
+
list += current_value
|
|
22
24
|
else
|
|
23
|
-
if
|
|
24
|
-
list <<
|
|
25
|
+
if current_value
|
|
26
|
+
list << current_value
|
|
25
27
|
end
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
|
|
29
|
-
# Some hackery so we can test whether
|
|
30
|
-
if
|
|
31
|
-
tmpis =
|
|
31
|
+
# Some hackery so we can test whether current_value is an array or a symbol
|
|
32
|
+
if current_value.is_a? Array
|
|
33
|
+
tmpis = current_value
|
|
32
34
|
else
|
|
33
|
-
if
|
|
34
|
-
tmpis = [
|
|
35
|
+
if current_value
|
|
36
|
+
tmpis = [current_value]
|
|
35
37
|
else
|
|
36
38
|
tmpis = []
|
|
37
39
|
end
|
|
@@ -39,6 +41,7 @@ Puppet::Type.newtype(:zone) do
|
|
|
39
41
|
|
|
40
42
|
rms = []
|
|
41
43
|
adds = []
|
|
44
|
+
|
|
42
45
|
# Collect the modifications to make
|
|
43
46
|
list.sort.uniq.collect do |obj|
|
|
44
47
|
# Skip objectories that are configured and should be
|
|
@@ -51,16 +54,17 @@ Puppet::Type.newtype(:zone) do
|
|
|
51
54
|
end
|
|
52
55
|
end
|
|
53
56
|
|
|
57
|
+
|
|
54
58
|
# And then perform all of the removals before any of the adds.
|
|
55
59
|
(rms.collect { |o| rm(o) } + adds.collect { |o| add(o) }).join("\n")
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
# We want all specified directories to be included.
|
|
59
|
-
def insync?
|
|
60
|
-
if
|
|
61
|
-
|
|
63
|
+
def insync?(current_value)
|
|
64
|
+
if current_value.is_a? Array and @should.is_a? Array
|
|
65
|
+
current_value.sort == @should.sort
|
|
62
66
|
else
|
|
63
|
-
|
|
67
|
+
current_value == @should
|
|
64
68
|
end
|
|
65
69
|
end
|
|
66
70
|
end
|
|
@@ -72,7 +76,14 @@ Puppet::Type.newtype(:zone) do
|
|
|
72
76
|
only then can be ``running``. Note also that ``halt`` is currently
|
|
73
77
|
used to stop zones."
|
|
74
78
|
|
|
75
|
-
@
|
|
79
|
+
@states = {}
|
|
80
|
+
|
|
81
|
+
def self.alias_state(values)
|
|
82
|
+
@state_aliases ||= {}
|
|
83
|
+
values.each do |nick, name|
|
|
84
|
+
@state_aliases[nick] = name
|
|
85
|
+
end
|
|
86
|
+
end
|
|
76
87
|
|
|
77
88
|
def self.newvalue(name, hash)
|
|
78
89
|
if @parametervalues.is_a? Hash
|
|
@@ -81,29 +92,39 @@ Puppet::Type.newtype(:zone) do
|
|
|
81
92
|
|
|
82
93
|
@parametervalues << name
|
|
83
94
|
|
|
84
|
-
@
|
|
95
|
+
@states[name] = hash
|
|
85
96
|
hash[:name] = name
|
|
86
97
|
end
|
|
87
98
|
|
|
99
|
+
def self.state_name(name)
|
|
100
|
+
if other = @state_aliases[name]
|
|
101
|
+
other
|
|
102
|
+
else
|
|
103
|
+
name
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
88
107
|
newvalue :absent, :down => :destroy
|
|
89
108
|
newvalue :configured, :up => :configure, :down => :uninstall
|
|
90
109
|
newvalue :installed, :up => :install, :down => :stop
|
|
91
110
|
newvalue :running, :up => :start
|
|
92
111
|
|
|
112
|
+
alias_state :incomplete => :installed, :ready => :installed, :shutting_down => :running
|
|
113
|
+
|
|
93
114
|
defaultto :running
|
|
94
115
|
|
|
95
|
-
def self.
|
|
96
|
-
@parametervalues.index(value)
|
|
116
|
+
def self.state_index(value)
|
|
117
|
+
@parametervalues.index(state_name(value))
|
|
97
118
|
end
|
|
98
119
|
|
|
99
120
|
# Return all of the states between two listed values, exclusive
|
|
100
121
|
# of the first item.
|
|
101
|
-
def self.
|
|
122
|
+
def self.state_sequence(first, second)
|
|
102
123
|
findex = sindex = nil
|
|
103
|
-
unless findex = @parametervalues.index(first)
|
|
124
|
+
unless findex = @parametervalues.index(state_name(first))
|
|
104
125
|
raise ArgumentError, "'%s' is not a valid zone state" % first
|
|
105
126
|
end
|
|
106
|
-
unless sindex = @parametervalues.index(second)
|
|
127
|
+
unless sindex = @parametervalues.index(state_name(second))
|
|
107
128
|
raise ArgumentError, "'%s' is not a valid zone state" % first
|
|
108
129
|
end
|
|
109
130
|
list = nil
|
|
@@ -112,11 +133,11 @@ Puppet::Type.newtype(:zone) do
|
|
|
112
133
|
# the range op twice.
|
|
113
134
|
if findex > sindex
|
|
114
135
|
list = @parametervalues[sindex..findex].collect do |name|
|
|
115
|
-
@
|
|
136
|
+
@states[name]
|
|
116
137
|
end.reverse
|
|
117
138
|
else
|
|
118
139
|
list = @parametervalues[findex..sindex].collect do |name|
|
|
119
|
-
@
|
|
140
|
+
@states[name]
|
|
120
141
|
end
|
|
121
142
|
end
|
|
122
143
|
|
|
@@ -124,27 +145,24 @@ Puppet::Type.newtype(:zone) do
|
|
|
124
145
|
list[1..-1]
|
|
125
146
|
end
|
|
126
147
|
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
@is = value
|
|
148
|
+
def retrieve
|
|
149
|
+
provider.properties[:ensure]
|
|
130
150
|
end
|
|
131
151
|
|
|
132
152
|
def sync
|
|
133
153
|
method = nil
|
|
134
154
|
if up?
|
|
135
|
-
|
|
155
|
+
direction = :up
|
|
136
156
|
else
|
|
137
|
-
|
|
157
|
+
direction = :down
|
|
138
158
|
end
|
|
139
159
|
|
|
140
160
|
# We need to get the state we're currently in and just call
|
|
141
161
|
# everything between it and us.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
properties.each do |prop|
|
|
145
|
-
if method = prop[dir]
|
|
162
|
+
self.class.state_sequence(self.retrieve, self.should).each do |state|
|
|
163
|
+
if method = state[direction]
|
|
146
164
|
warned = false
|
|
147
|
-
while
|
|
165
|
+
while provider.processing?
|
|
148
166
|
unless warned
|
|
149
167
|
info "Waiting for zone to finish processing"
|
|
150
168
|
warned = true
|
|
@@ -154,7 +172,7 @@ Puppet::Type.newtype(:zone) do
|
|
|
154
172
|
provider.send(method)
|
|
155
173
|
else
|
|
156
174
|
raise Puppet::DevError, "Cannot move %s from %s" %
|
|
157
|
-
[
|
|
175
|
+
[direction, st[:name]]
|
|
158
176
|
end
|
|
159
177
|
end
|
|
160
178
|
|
|
@@ -163,7 +181,8 @@ Puppet::Type.newtype(:zone) do
|
|
|
163
181
|
|
|
164
182
|
# Are we moving up the property tree?
|
|
165
183
|
def up?
|
|
166
|
-
|
|
184
|
+
current_value = self.retrieve
|
|
185
|
+
self.class.state_index(current_value) < self.class.state_index(self.should)
|
|
167
186
|
end
|
|
168
187
|
end
|
|
169
188
|
|
|
@@ -200,7 +219,7 @@ Puppet::Type.newtype(:zone) do
|
|
|
200
219
|
end
|
|
201
220
|
end
|
|
202
221
|
|
|
203
|
-
# Add
|
|
222
|
+
# Add an interface.
|
|
204
223
|
def add(str)
|
|
205
224
|
interface, ip = ipsplit(str)
|
|
206
225
|
"add net
|
|
@@ -216,6 +235,7 @@ end
|
|
|
216
235
|
return interface, address
|
|
217
236
|
end
|
|
218
237
|
|
|
238
|
+
# Remove an interface.
|
|
219
239
|
def rm(str)
|
|
220
240
|
interface, ip = ipsplit(str)
|
|
221
241
|
# Reality seems to disagree with the documentation here; the docs
|
|
@@ -260,7 +280,7 @@ end
|
|
|
260
280
|
|
|
261
281
|
validate do |value|
|
|
262
282
|
unless value =~ /^\//
|
|
263
|
-
raise ArgumentError, "
|
|
283
|
+
raise ArgumentError, "Inherited filesystems must be fully qualified"
|
|
264
284
|
end
|
|
265
285
|
end
|
|
266
286
|
|
|
@@ -330,7 +350,7 @@ end
|
|
|
330
350
|
|
|
331
351
|
munge do |value|
|
|
332
352
|
if value =~ /%s/
|
|
333
|
-
value % @
|
|
353
|
+
value % @resource[:name]
|
|
334
354
|
else
|
|
335
355
|
value
|
|
336
356
|
end
|
|
@@ -351,92 +371,33 @@ end
|
|
|
351
371
|
end
|
|
352
372
|
end
|
|
353
373
|
|
|
354
|
-
# Perform all of our configuration steps.
|
|
355
|
-
def configure
|
|
356
|
-
# If the thing is entirely absent, then we need to create the config.
|
|
357
|
-
str = %{create -b
|
|
358
|
-
set zonepath=%s
|
|
359
|
-
} % self[:path]
|
|
360
|
-
|
|
361
|
-
# Then perform all of our configuration steps.
|
|
362
|
-
properties().each do |property|
|
|
363
|
-
if property.is_a? ZoneConfigProperty and ! property.insync?
|
|
364
|
-
str += property.configtext + "\n"
|
|
365
|
-
end
|
|
366
|
-
end
|
|
367
|
-
|
|
368
|
-
str += "commit\n"
|
|
369
|
-
provider.setconfig(str)
|
|
370
|
-
end
|
|
371
|
-
|
|
372
|
-
# We need a way to test whether a zone is in process. Our 'ensure'
|
|
373
|
-
# property models the static states, but we need to handle the temporary ones.
|
|
374
|
-
def processing?
|
|
375
|
-
if hash = provider.statushash()
|
|
376
|
-
case hash[:ensure]
|
|
377
|
-
when "incomplete", "ready", "shutting_down"
|
|
378
|
-
true
|
|
379
|
-
else
|
|
380
|
-
false
|
|
381
|
-
end
|
|
382
|
-
else
|
|
383
|
-
false
|
|
384
|
-
end
|
|
385
|
-
end
|
|
386
|
-
|
|
387
374
|
def retrieve
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
config2status(provider.getconfig())
|
|
375
|
+
provider.flush
|
|
376
|
+
if hash = provider.properties() and hash[:ensure] != :absent
|
|
377
|
+
result = setstatus(hash)
|
|
378
|
+
result
|
|
393
379
|
else
|
|
394
|
-
|
|
395
|
-
pr.is = :absent
|
|
396
|
-
end
|
|
380
|
+
return currentpropvalues(:absent)
|
|
397
381
|
end
|
|
398
382
|
end
|
|
399
383
|
|
|
400
384
|
# Take the results of a listing and set everything appropriately.
|
|
401
385
|
def setstatus(hash)
|
|
386
|
+
prophash = {}
|
|
402
387
|
hash.each do |param, value|
|
|
403
388
|
next if param == :name
|
|
404
389
|
case self.class.attrtype(param)
|
|
405
|
-
when :
|
|
406
|
-
|
|
390
|
+
when :property:
|
|
391
|
+
# Only try to provide values for the properties we're managing
|
|
392
|
+
if prop = self.property(param)
|
|
393
|
+
prophash[prop] = value
|
|
394
|
+
end
|
|
407
395
|
else
|
|
408
396
|
self[param] = value
|
|
409
397
|
end
|
|
410
398
|
end
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
private
|
|
414
|
-
# Turn the results of getconfig into status information.
|
|
415
|
-
def config2status(config)
|
|
416
|
-
config.each do |name, value|
|
|
417
|
-
case name
|
|
418
|
-
when :autoboot:
|
|
419
|
-
self.is = [:autoboot, value.intern]
|
|
420
|
-
when :zonepath:
|
|
421
|
-
# Nothing; this is set in the zoneadm list command
|
|
422
|
-
when :pool:
|
|
423
|
-
self.is = [:pool, value]
|
|
424
|
-
when :shares:
|
|
425
|
-
self.is = [:shares, value]
|
|
426
|
-
when "inherit-pkg-dir":
|
|
427
|
-
dirs = value.collect do |hash|
|
|
428
|
-
hash[:dir]
|
|
429
|
-
end
|
|
430
|
-
|
|
431
|
-
self.is = [:inherit, dirs]
|
|
432
|
-
when "net":
|
|
433
|
-
vals = value.collect do |hash|
|
|
434
|
-
"%s:%s" % [hash[:physical], hash[:address]]
|
|
435
|
-
end
|
|
436
|
-
self.is = [:ip, vals]
|
|
437
|
-
end
|
|
438
|
-
end
|
|
399
|
+
return prophash
|
|
439
400
|
end
|
|
440
401
|
end
|
|
441
402
|
|
|
442
|
-
# $Id: zone.rb
|
|
403
|
+
# $Id: zone.rb 2576 2007-06-14 03:39:00Z luke $
|