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
|
@@ -26,20 +26,19 @@ module Puppet
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# We want to print names, not numbers
|
|
29
|
-
def is_to_s
|
|
30
|
-
if
|
|
31
|
-
id2name(
|
|
29
|
+
def is_to_s(currentvalue)
|
|
30
|
+
if currentvalue.is_a? Integer
|
|
31
|
+
id2name(currentvalue) || currentvalue
|
|
32
32
|
else
|
|
33
|
-
return
|
|
33
|
+
return currentvalue.to_s
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def should_to_s
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
id2name(should) || should
|
|
37
|
+
def should_to_s(newvalue = @should)
|
|
38
|
+
if newvalue.is_a? Integer
|
|
39
|
+
id2name(newvalue) || newalue
|
|
41
40
|
else
|
|
42
|
-
return
|
|
41
|
+
return newvalue.to_s
|
|
43
42
|
end
|
|
44
43
|
end
|
|
45
44
|
|
|
@@ -57,20 +56,20 @@ module Puppet
|
|
|
57
56
|
end
|
|
58
57
|
end
|
|
59
58
|
end
|
|
60
|
-
stat = @
|
|
59
|
+
stat = @resource.stat(false)
|
|
61
60
|
|
|
62
61
|
unless stat
|
|
63
|
-
|
|
64
|
-
return
|
|
62
|
+
return :absent
|
|
65
63
|
end
|
|
66
64
|
|
|
67
65
|
# Set our method appropriately, depending on links.
|
|
68
|
-
if stat.ftype == "link" and @
|
|
66
|
+
if stat.ftype == "link" and @resource[:links] != :follow
|
|
69
67
|
@method = :lchown
|
|
70
68
|
else
|
|
71
69
|
@method = :chown
|
|
72
70
|
end
|
|
73
|
-
|
|
71
|
+
|
|
72
|
+
return stat.gid
|
|
74
73
|
end
|
|
75
74
|
|
|
76
75
|
# Determine if the group is valid, and if so, return the GID
|
|
@@ -90,17 +89,13 @@ module Puppet
|
|
|
90
89
|
# we'll just let it fail, but we should probably set things up so
|
|
91
90
|
# that users get warned if they try to change to an unacceptable group.
|
|
92
91
|
def sync
|
|
93
|
-
|
|
94
|
-
@
|
|
95
|
-
self.retrieve
|
|
92
|
+
unless @resource.stat(false)
|
|
93
|
+
stat = @resource.stat(true)
|
|
94
|
+
currentvalue = self.retrieve
|
|
96
95
|
|
|
97
|
-
|
|
96
|
+
unless stat
|
|
98
97
|
self.debug "File '%s' does not exist; cannot chgrp" %
|
|
99
|
-
@
|
|
100
|
-
return nil
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
if self.insync?
|
|
98
|
+
@resource[:path]
|
|
104
99
|
return nil
|
|
105
100
|
end
|
|
106
101
|
end
|
|
@@ -112,10 +107,10 @@ module Puppet
|
|
|
112
107
|
|
|
113
108
|
begin
|
|
114
109
|
# set owner to nil so it's ignored
|
|
115
|
-
File.send(@method,nil,gid,@
|
|
110
|
+
File.send(@method,nil,gid,@resource[:path])
|
|
116
111
|
rescue => detail
|
|
117
112
|
error = Puppet::Error.new( "failed to chgrp %s to %s: %s" %
|
|
118
|
-
[@
|
|
113
|
+
[@resource[:path], self.should, detail.message])
|
|
119
114
|
raise error
|
|
120
115
|
end
|
|
121
116
|
return :file_changed
|
|
@@ -123,4 +118,4 @@ module Puppet
|
|
|
123
118
|
end
|
|
124
119
|
end
|
|
125
120
|
|
|
126
|
-
# $Id: group.rb
|
|
121
|
+
# $Id: group.rb 2500 2007-05-09 22:05:32Z luke $
|
|
@@ -10,27 +10,27 @@ module Puppet
|
|
|
10
10
|
|
|
11
11
|
# Our modes are octal, so make sure they print correctly. Other
|
|
12
12
|
# valid values are symbols, basically
|
|
13
|
-
def is_to_s
|
|
14
|
-
case
|
|
13
|
+
def is_to_s(currentvalue)
|
|
14
|
+
case currentvalue
|
|
15
15
|
when Integer
|
|
16
|
-
return "%o" %
|
|
16
|
+
return "%o" % currentvalue
|
|
17
17
|
when Symbol
|
|
18
|
-
return
|
|
18
|
+
return currentvalue
|
|
19
19
|
else
|
|
20
|
-
raise Puppet::DevError, "Invalid
|
|
21
|
-
|
|
20
|
+
raise Puppet::DevError, "Invalid current value for mode: %s" %
|
|
21
|
+
currentvalue.inspect
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def should_to_s
|
|
26
|
-
case
|
|
25
|
+
def should_to_s(newvalue = @should)
|
|
26
|
+
case newvalue
|
|
27
27
|
when Integer
|
|
28
|
-
return "%o" %
|
|
28
|
+
return "%o" % newvalue
|
|
29
29
|
when Symbol
|
|
30
|
-
return
|
|
30
|
+
return newvalue
|
|
31
31
|
else
|
|
32
32
|
raise Puppet::DevError, "Invalid 'should' value for mode: %s" %
|
|
33
|
-
|
|
33
|
+
newvalue.inspect
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -62,7 +62,7 @@ module Puppet
|
|
|
62
62
|
# If we're a directory, we need to be executable for all cases
|
|
63
63
|
# that are readable. This should probably be selectable, but eh.
|
|
64
64
|
def dirmask(value)
|
|
65
|
-
if FileTest.directory?(@
|
|
65
|
+
if FileTest.directory?(@resource[:path])
|
|
66
66
|
if value & 0400 != 0
|
|
67
67
|
value |= 0100
|
|
68
68
|
end
|
|
@@ -77,12 +77,12 @@ module Puppet
|
|
|
77
77
|
return value
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
def insync?
|
|
81
|
-
if stat = @
|
|
80
|
+
def insync?(currentvalue)
|
|
81
|
+
if stat = @resource.stat and stat.ftype == "link" and @resource[:links] != :follow
|
|
82
82
|
self.debug "Not managing symlink mode"
|
|
83
83
|
return true
|
|
84
84
|
else
|
|
85
|
-
return super
|
|
85
|
+
return super(currentvalue)
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -90,31 +90,24 @@ module Puppet
|
|
|
90
90
|
# If we're not following links and we're a link, then we just turn
|
|
91
91
|
# off mode management entirely.
|
|
92
92
|
|
|
93
|
-
if stat = @
|
|
94
|
-
self.is = stat.mode & 007777
|
|
93
|
+
if stat = @resource.stat(false)
|
|
95
94
|
unless defined? @fixed
|
|
96
95
|
if defined? @should and @should
|
|
97
96
|
@should = @should.collect { |s| self.dirmask(s) }
|
|
98
97
|
end
|
|
99
98
|
end
|
|
99
|
+
return stat.mode & 007777
|
|
100
100
|
else
|
|
101
|
-
|
|
101
|
+
return :absent
|
|
102
102
|
end
|
|
103
|
-
|
|
104
|
-
#self.debug "chmod state is %o" % self.is
|
|
105
103
|
end
|
|
106
104
|
|
|
107
105
|
def sync
|
|
108
|
-
|
|
109
|
-
@
|
|
110
|
-
self.retrieve
|
|
111
|
-
if @is == :absent
|
|
112
|
-
self.debug "File does not exist; cannot set mode"
|
|
113
|
-
return nil
|
|
114
|
-
end
|
|
106
|
+
unless @resource.stat(false)
|
|
107
|
+
stat = @resource.stat(true)
|
|
115
108
|
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
unless stat
|
|
110
|
+
self.debug "File does not exist; cannot set mode"
|
|
118
111
|
return nil
|
|
119
112
|
end
|
|
120
113
|
end
|
|
@@ -127,10 +120,10 @@ module Puppet
|
|
|
127
120
|
end
|
|
128
121
|
|
|
129
122
|
begin
|
|
130
|
-
File.chmod(mode
|
|
123
|
+
File.chmod(mode, @resource[:path])
|
|
131
124
|
rescue => detail
|
|
132
125
|
error = Puppet::Error.new("failed to chmod %s: %s" %
|
|
133
|
-
[@
|
|
126
|
+
[@resource[:path], detail.message])
|
|
134
127
|
error.set_backtrace detail.backtrace
|
|
135
128
|
raise error
|
|
136
129
|
end
|
|
@@ -139,4 +132,4 @@ module Puppet
|
|
|
139
132
|
end
|
|
140
133
|
end
|
|
141
134
|
|
|
142
|
-
# $Id: mode.rb
|
|
135
|
+
# $Id: mode.rb 2500 2007-05-09 22:05:32Z luke $
|
|
@@ -64,21 +64,21 @@ module Puppet
|
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
# We want to print names, not numbers
|
|
67
|
-
def is_to_s
|
|
68
|
-
id2name(
|
|
67
|
+
def is_to_s(currentvalue)
|
|
68
|
+
id2name(currentvalue) || currentvalue
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
def should_to_s
|
|
72
|
-
case
|
|
71
|
+
def should_to_s(newvalue = @should)
|
|
72
|
+
case newvalue
|
|
73
73
|
when Symbol
|
|
74
|
-
|
|
74
|
+
newvalue.to_s
|
|
75
75
|
when Integer
|
|
76
|
-
id2name(
|
|
76
|
+
id2name(newvalue) || newvalue
|
|
77
77
|
when String
|
|
78
|
-
|
|
78
|
+
newvalue
|
|
79
79
|
else
|
|
80
80
|
raise Puppet::DevError, "Invalid uid type %s(%s)" %
|
|
81
|
-
[
|
|
81
|
+
[newvalue.class, newvalue]
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
@@ -97,34 +97,35 @@ module Puppet
|
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
unless stat = @
|
|
101
|
-
|
|
102
|
-
return
|
|
100
|
+
unless stat = @resource.stat(false)
|
|
101
|
+
return :absent
|
|
103
102
|
end
|
|
104
103
|
|
|
105
104
|
# Set our method appropriately, depending on links.
|
|
106
|
-
if stat.ftype == "link" and @
|
|
105
|
+
if stat.ftype == "link" and @resource[:links] != :follow
|
|
107
106
|
@method = :lchown
|
|
108
107
|
else
|
|
109
108
|
@method = :chown
|
|
110
109
|
end
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
currentvalue = stat.uid
|
|
112
|
+
|
|
114
113
|
# On OS X, files that are owned by -2 get returned as really
|
|
115
114
|
# large UIDs instead of negative ones. This isn't a Ruby bug,
|
|
116
115
|
# it's an OS X bug, since it shows up in perl, too.
|
|
117
|
-
if
|
|
118
|
-
self.warning "current state is silly: %s" %
|
|
119
|
-
|
|
116
|
+
if currentvalue > 120000
|
|
117
|
+
self.warning "current state is silly: %s" % currentvalue
|
|
118
|
+
currentvalue = :silly
|
|
120
119
|
end
|
|
120
|
+
|
|
121
|
+
return currentvalue
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
def sync
|
|
124
125
|
unless Puppet::Util::SUIDManager.uid == 0
|
|
125
126
|
unless defined? @@notifieduid
|
|
126
127
|
self.notice "Cannot manage ownership unless running as root"
|
|
127
|
-
#@
|
|
128
|
+
#@resource.delete(self.name)
|
|
128
129
|
@@notifieduid = true
|
|
129
130
|
end
|
|
130
131
|
return nil
|
|
@@ -146,21 +147,16 @@ module Puppet
|
|
|
146
147
|
return nil
|
|
147
148
|
end
|
|
148
149
|
|
|
149
|
-
|
|
150
|
-
@
|
|
151
|
-
self.retrieve
|
|
152
|
-
if @is == :absent
|
|
150
|
+
unless @resource.stat(false)
|
|
151
|
+
unless @resource.stat(true)
|
|
153
152
|
self.debug "File does not exist; cannot set owner"
|
|
154
153
|
return nil
|
|
155
154
|
end
|
|
156
|
-
if self.insync?
|
|
157
|
-
return nil
|
|
158
|
-
end
|
|
159
155
|
#self.debug "%s: after refresh, is '%s'" % [self.class.name,@is]
|
|
160
156
|
end
|
|
161
157
|
|
|
162
158
|
begin
|
|
163
|
-
File.send(@method, user, nil, @
|
|
159
|
+
File.send(@method, user, nil, @resource[:path])
|
|
164
160
|
rescue => detail
|
|
165
161
|
raise Puppet::Error, "Failed to set owner to '%s': %s" %
|
|
166
162
|
[user, detail]
|
|
@@ -171,4 +167,4 @@ module Puppet
|
|
|
171
167
|
end
|
|
172
168
|
end
|
|
173
169
|
|
|
174
|
-
# $Id: owner.rb
|
|
170
|
+
# $Id: owner.rb 2501 2007-05-09 23:08:42Z luke $
|
|
@@ -22,7 +22,16 @@ module Puppet
|
|
|
22
22
|
source => \"puppet://server/module/sendmail.cf\"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
Currently, only the ``puppet`` scheme is supported for source
|
|
27
|
+
URL's. Puppet will connect to the file server running on
|
|
28
|
+
``server`` to retrieve the contents of the file. If the
|
|
29
|
+
``server`` part is empty, the behavior of the command-line
|
|
30
|
+
interpreter (``puppet``) and the client demon (``puppetd``) differs
|
|
31
|
+
slightly: ``puppet`` will look such a file up on the module path
|
|
32
|
+
on the local host, whereas ``puppetd`` will connect to the
|
|
33
|
+
puppet server that it received the manifest from.
|
|
34
|
+
|
|
26
35
|
See the `FileServingConfiguration fileserver configuration documentation`:trac: for information on how to configure
|
|
27
36
|
and use file services within Puppet.
|
|
28
37
|
|
|
@@ -46,7 +55,7 @@ module Puppet
|
|
|
46
55
|
uncheckable
|
|
47
56
|
|
|
48
57
|
validate do |source|
|
|
49
|
-
unless @
|
|
58
|
+
unless @resource.uri2obj(source)
|
|
50
59
|
raise Puppet::Error, "Invalid source %s" % source
|
|
51
60
|
end
|
|
52
61
|
end
|
|
@@ -60,9 +69,9 @@ module Puppet
|
|
|
60
69
|
source.sub(/\/$/, '')
|
|
61
70
|
end
|
|
62
71
|
|
|
63
|
-
def change_to_s
|
|
64
|
-
|
|
65
|
-
if @
|
|
72
|
+
def change_to_s(currentvalue, newvalue)
|
|
73
|
+
# newvalue = "{md5}" + @stats[:checksum]
|
|
74
|
+
if @resource.property(:ensure).retrieve == :absent
|
|
66
75
|
return "creating from source %s with contents %s" % [@source, @stats[:checksum]]
|
|
67
76
|
else
|
|
68
77
|
return "replacing from source %s with contents %s" % [@source, @stats[:checksum]]
|
|
@@ -79,11 +88,11 @@ module Puppet
|
|
|
79
88
|
|
|
80
89
|
# Ask the file server to describe our file.
|
|
81
90
|
def describe(source)
|
|
82
|
-
sourceobj, path = @
|
|
91
|
+
sourceobj, path = @resource.uri2obj(source)
|
|
83
92
|
server = sourceobj.server
|
|
84
93
|
|
|
85
94
|
begin
|
|
86
|
-
desc = server.describe(path, @
|
|
95
|
+
desc = server.describe(path, @resource[:links])
|
|
87
96
|
rescue Puppet::Network::XMLRPCClientError => detail
|
|
88
97
|
self.err "Could not describe %s: %s" %
|
|
89
98
|
[path, detail]
|
|
@@ -107,7 +116,7 @@ module Puppet
|
|
|
107
116
|
args.delete(:owner)
|
|
108
117
|
end
|
|
109
118
|
|
|
110
|
-
if args.empty? or (args[:type] == "link" and @
|
|
119
|
+
if args.empty? or (args[:type] == "link" and @resource[:links] == :ignore)
|
|
111
120
|
return nil
|
|
112
121
|
else
|
|
113
122
|
return args
|
|
@@ -116,17 +125,17 @@ module Puppet
|
|
|
116
125
|
|
|
117
126
|
# Have we successfully described the remote source?
|
|
118
127
|
def described?
|
|
119
|
-
! @stats.nil? and ! @stats[:type].nil? and @is != :notdescribed
|
|
128
|
+
! @stats.nil? and ! @stats[:type].nil? #and @is != :notdescribed
|
|
120
129
|
end
|
|
121
130
|
|
|
122
131
|
# Use the info we get from describe() to check if we're in sync.
|
|
123
|
-
def insync?
|
|
132
|
+
def insync?(currentvalue)
|
|
124
133
|
unless described?
|
|
125
134
|
info "No specified sources exist"
|
|
126
135
|
return true
|
|
127
136
|
end
|
|
128
137
|
|
|
129
|
-
if
|
|
138
|
+
if currentvalue == :nocopy
|
|
130
139
|
return true
|
|
131
140
|
end
|
|
132
141
|
|
|
@@ -136,11 +145,14 @@ module Puppet
|
|
|
136
145
|
return true
|
|
137
146
|
end
|
|
138
147
|
|
|
139
|
-
|
|
148
|
+
#FIXARB: Inefficient? Needed to call retrieve on parent's ensure and checksum
|
|
149
|
+
parentensure = @resource.property(:ensure).retrieve
|
|
150
|
+
if parentensure != :absent and ! @resource.replace?
|
|
140
151
|
return true
|
|
141
152
|
end
|
|
142
153
|
# Now, we just check to see if the checksums are the same
|
|
143
|
-
|
|
154
|
+
parentchecksum = @resource.property(:checksum).retrieve
|
|
155
|
+
return (!parentchecksum.nil? and (parentchecksum == @stats[:checksum]))
|
|
144
156
|
end
|
|
145
157
|
|
|
146
158
|
def pinparams
|
|
@@ -169,21 +181,19 @@ module Puppet
|
|
|
169
181
|
end
|
|
170
182
|
|
|
171
183
|
if @stats.nil? or @stats[:type].nil?
|
|
172
|
-
|
|
173
|
-
return nil
|
|
184
|
+
return nil # :notdescribed
|
|
174
185
|
end
|
|
175
186
|
|
|
176
187
|
case @stats[:type]
|
|
177
188
|
when "directory", "file":
|
|
178
|
-
unless @
|
|
179
|
-
@
|
|
189
|
+
unless @resource.deleting?
|
|
190
|
+
@resource[:ensure] = @stats[:type]
|
|
180
191
|
end
|
|
181
192
|
else
|
|
182
193
|
self.info @stats.inspect
|
|
183
194
|
self.err "Cannot use files of type %s as sources" %
|
|
184
195
|
@stats[:type]
|
|
185
|
-
|
|
186
|
-
return
|
|
196
|
+
return :nocopy
|
|
187
197
|
end
|
|
188
198
|
|
|
189
199
|
# Take each of the stats and set them as states on the local file
|
|
@@ -194,13 +204,12 @@ module Puppet
|
|
|
194
204
|
|
|
195
205
|
# was the stat already specified, or should the value
|
|
196
206
|
# be inherited from the source?
|
|
197
|
-
unless @
|
|
198
|
-
@
|
|
199
|
-
@parent.property(stat).retrieve
|
|
207
|
+
unless @resource.argument?(stat)
|
|
208
|
+
@resource[stat] = value
|
|
200
209
|
end
|
|
201
210
|
}
|
|
202
211
|
|
|
203
|
-
|
|
212
|
+
return @stats[:checksum]
|
|
204
213
|
end
|
|
205
214
|
|
|
206
215
|
def should
|
|
@@ -214,25 +223,25 @@ module Puppet
|
|
|
214
223
|
checks = (pinparams + [:ensure])
|
|
215
224
|
checks.delete(:checksum)
|
|
216
225
|
|
|
217
|
-
@
|
|
218
|
-
unless @
|
|
219
|
-
@
|
|
226
|
+
@resource[:check] = checks
|
|
227
|
+
unless @resource.property(:checksum)
|
|
228
|
+
@resource[:checksum] = :md5
|
|
220
229
|
end
|
|
221
230
|
end
|
|
222
231
|
|
|
223
232
|
def sync
|
|
224
233
|
unless @stats[:type] == "file"
|
|
225
234
|
#if @stats[:type] == "directory"
|
|
226
|
-
#[@
|
|
235
|
+
#[@resource.name, @should.inspect]
|
|
227
236
|
#end
|
|
228
237
|
raise Puppet::DevError, "Got told to copy non-file %s" %
|
|
229
|
-
@
|
|
238
|
+
@resource[:path]
|
|
230
239
|
end
|
|
231
240
|
|
|
232
|
-
sourceobj, path = @
|
|
241
|
+
sourceobj, path = @resource.uri2obj(@source)
|
|
233
242
|
|
|
234
243
|
begin
|
|
235
|
-
contents = sourceobj.server.retrieve(path, @
|
|
244
|
+
contents = sourceobj.server.retrieve(path, @resource[:links])
|
|
236
245
|
rescue Puppet::Network::XMLRPCClientError => detail
|
|
237
246
|
self.err "Could not retrieve %s: %s" %
|
|
238
247
|
[path, detail]
|
|
@@ -249,9 +258,9 @@ module Puppet
|
|
|
249
258
|
self.notice "Could not retrieve contents for %s" %
|
|
250
259
|
@source
|
|
251
260
|
end
|
|
252
|
-
exists = File.exists?(@
|
|
261
|
+
exists = File.exists?(@resource[:path])
|
|
253
262
|
|
|
254
|
-
@
|
|
263
|
+
@resource.write { |f| f.print contents }
|
|
255
264
|
|
|
256
265
|
if exists
|
|
257
266
|
return :file_changed
|
|
@@ -262,4 +271,4 @@ module Puppet
|
|
|
262
271
|
end
|
|
263
272
|
end
|
|
264
273
|
|
|
265
|
-
# $Id: source.rb
|
|
274
|
+
# $Id: source.rb 2610 2007-06-18 19:29:56Z lutter $
|