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
|
@@ -10,12 +10,13 @@ module Puppet
|
|
|
10
10
|
|
|
11
11
|
# Anything else, basically
|
|
12
12
|
newvalue(/./) do
|
|
13
|
-
if ! @
|
|
14
|
-
@
|
|
13
|
+
if ! @resource.should(:ensure)
|
|
14
|
+
@resource[:ensure] = :link
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# Only call mklink if ensure() didn't call us in the first place.
|
|
18
|
-
|
|
18
|
+
currentensure = @resource.property(:ensure).retrieve
|
|
19
|
+
if @resource.property(:ensure).insync?(currentensure)
|
|
19
20
|
mklink()
|
|
20
21
|
end
|
|
21
22
|
end
|
|
@@ -26,21 +27,21 @@ module Puppet
|
|
|
26
27
|
|
|
27
28
|
# Clean up any existing objects. The argument is just for logging,
|
|
28
29
|
# it doesn't determine what's removed.
|
|
29
|
-
@
|
|
30
|
+
@resource.remove_existing(target)
|
|
30
31
|
|
|
31
|
-
if FileTest.exists?(@
|
|
32
|
+
if FileTest.exists?(@resource[:path])
|
|
32
33
|
raise Puppet::Error, "Could not remove existing file"
|
|
33
34
|
end
|
|
34
35
|
|
|
35
|
-
Dir.chdir(File.dirname(@
|
|
36
|
-
Puppet::Util::SUIDManager.asuser(@
|
|
37
|
-
mode = @
|
|
36
|
+
Dir.chdir(File.dirname(@resource[:path])) do
|
|
37
|
+
Puppet::Util::SUIDManager.asuser(@resource.asuser()) do
|
|
38
|
+
mode = @resource.should(:mode)
|
|
38
39
|
if mode
|
|
39
40
|
Puppet::Util.withumask(000) do
|
|
40
|
-
File.symlink(target, @
|
|
41
|
+
File.symlink(target, @resource[:path])
|
|
41
42
|
end
|
|
42
43
|
else
|
|
43
|
-
File.symlink(target, @
|
|
44
|
+
File.symlink(target, @resource[:path])
|
|
44
45
|
end
|
|
45
46
|
end
|
|
46
47
|
|
|
@@ -48,26 +49,27 @@ module Puppet
|
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
|
|
51
|
-
def insync?
|
|
52
|
-
if [:nochange, :notlink].include?(self.should) or @
|
|
52
|
+
def insync?(currentvalue)
|
|
53
|
+
if [:nochange, :notlink].include?(self.should) or @resource.recurse?
|
|
53
54
|
return true
|
|
54
55
|
else
|
|
55
|
-
return super
|
|
56
|
+
return super(currentvalue)
|
|
56
57
|
end
|
|
57
58
|
end
|
|
58
59
|
|
|
60
|
+
|
|
59
61
|
def retrieve
|
|
60
|
-
if stat = @
|
|
62
|
+
if stat = @resource.stat
|
|
61
63
|
if stat.ftype == "link"
|
|
62
|
-
|
|
64
|
+
return File.readlink(@resource[:path])
|
|
63
65
|
else
|
|
64
|
-
|
|
66
|
+
return :notlink
|
|
65
67
|
end
|
|
66
68
|
else
|
|
67
|
-
|
|
69
|
+
return :absent
|
|
68
70
|
end
|
|
69
71
|
end
|
|
70
72
|
end
|
|
71
73
|
end
|
|
72
74
|
|
|
73
|
-
# $Id: target.rb
|
|
75
|
+
# $Id: target.rb 2500 2007-05-09 22:05:32Z luke $
|
|
@@ -8,14 +8,13 @@ module Puppet
|
|
|
8
8
|
#end
|
|
9
9
|
|
|
10
10
|
def retrieve
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@is = :absent
|
|
11
|
+
currentvalue = :absent
|
|
12
|
+
if stat = @resource.stat(false)
|
|
13
|
+
currentvalue = stat.ftype
|
|
15
14
|
end
|
|
16
|
-
|
|
17
15
|
# so this state is never marked out of sync
|
|
18
|
-
@should = [
|
|
16
|
+
@should = [currentvalue]
|
|
17
|
+
return currentvalue
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
|
|
@@ -25,4 +24,4 @@ module Puppet
|
|
|
25
24
|
end
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
# $Id: type.rb
|
|
27
|
+
# $Id: type.rb 2500 2007-05-09 22:05:32Z luke $
|
|
@@ -70,8 +70,8 @@ module Puppet
|
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
def self.
|
|
74
|
-
|
|
73
|
+
def self.instances
|
|
74
|
+
[]
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def bucket
|
|
@@ -114,4 +114,4 @@ module Puppet
|
|
|
114
114
|
end
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
-
# $Id: pfilebucket.rb
|
|
117
|
+
# $Id: pfilebucket.rb 2551 2007-06-04 20:37:14Z luke $
|
data/lib/puppet/type/port.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'puppet/type/parsedtype'
|
|
2
|
-
|
|
3
1
|
#module Puppet
|
|
4
2
|
# newtype(:port) do
|
|
5
3
|
# @doc = "Installs and manages port entries. For most systems, these
|
|
@@ -90,8 +88,8 @@ require 'puppet/type/parsedtype'
|
|
|
90
88
|
# munge do |value|
|
|
91
89
|
# unless value == "absent" or value == :absent
|
|
92
90
|
# # Add the :alias metaparam in addition to the property
|
|
93
|
-
# @
|
|
94
|
-
# @
|
|
91
|
+
# @resource.newmetaparam(
|
|
92
|
+
# @resource.class.metaparamclass(:alias), value
|
|
95
93
|
# )
|
|
96
94
|
# end
|
|
97
95
|
# value
|
|
@@ -102,8 +100,8 @@ require 'puppet/type/parsedtype'
|
|
|
102
100
|
# desc "The file in which to store service information. Only used by
|
|
103
101
|
# those providers that write to disk (i.e., not NetInfo)."
|
|
104
102
|
#
|
|
105
|
-
# defaultto { if @
|
|
106
|
-
# @
|
|
103
|
+
# defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
|
|
104
|
+
# @resource.class.defaultprovider.default_target
|
|
107
105
|
# else
|
|
108
106
|
# nil
|
|
109
107
|
# end
|
|
@@ -118,4 +116,4 @@ require 'puppet/type/parsedtype'
|
|
|
118
116
|
# end
|
|
119
117
|
#end
|
|
120
118
|
|
|
121
|
-
# $Id: port.rb
|
|
119
|
+
# $Id: port.rb 2517 2007-05-15 19:22:36Z luke $
|
data/lib/puppet/type/property.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# The virtual base class for properties, which are the self-contained building
|
|
1
|
+
# The virtual base class for properties, which are the self-contained building
|
|
2
2
|
# blocks for actually doing work on the system.
|
|
3
3
|
|
|
4
4
|
require 'puppet'
|
|
@@ -8,7 +8,6 @@ require 'puppet/parameter'
|
|
|
8
8
|
|
|
9
9
|
module Puppet
|
|
10
10
|
class Property < Puppet::Parameter
|
|
11
|
-
attr_accessor :is
|
|
12
11
|
|
|
13
12
|
# Because 'should' uses an array, we have a special method for handling
|
|
14
13
|
# it. We also want to keep copies of the original values, so that
|
|
@@ -143,7 +142,7 @@ class Property < Puppet::Parameter
|
|
|
143
142
|
def call_valuemethod(name, value)
|
|
144
143
|
event = nil
|
|
145
144
|
if method = self.class.value_option(name, :method) and self.respond_to?(method)
|
|
146
|
-
self.debug "setting %s (currently %s)" % [value, self.
|
|
145
|
+
self.debug "setting %s (currently %s)" % [value, self.retrieve]
|
|
147
146
|
|
|
148
147
|
begin
|
|
149
148
|
event = self.send(method)
|
|
@@ -154,7 +153,7 @@ class Property < Puppet::Parameter
|
|
|
154
153
|
puts detail.backtrace
|
|
155
154
|
end
|
|
156
155
|
error = Puppet::Error.new("Could not set %s on %s: %s" %
|
|
157
|
-
[value, self.class.name, detail], @
|
|
156
|
+
[value, self.class.name, detail], @resource.line, @resource.file)
|
|
158
157
|
error.set_backtrace detail.backtrace
|
|
159
158
|
raise error
|
|
160
159
|
end
|
|
@@ -169,17 +168,17 @@ class Property < Puppet::Parameter
|
|
|
169
168
|
end
|
|
170
169
|
|
|
171
170
|
# How should a property change be printed as a string?
|
|
172
|
-
def change_to_s
|
|
171
|
+
def change_to_s(currentvalue, newvalue)
|
|
173
172
|
begin
|
|
174
|
-
if
|
|
173
|
+
if currentvalue == :absent
|
|
175
174
|
return "defined '%s' as '%s'" %
|
|
176
|
-
[self.name, self.should_to_s]
|
|
177
|
-
elsif
|
|
175
|
+
[self.name, self.should_to_s(newvalue)]
|
|
176
|
+
elsif newvalue == :absent or newvalue == [:absent]
|
|
178
177
|
return "undefined %s from '%s'" %
|
|
179
|
-
[self.name, self.is_to_s]
|
|
178
|
+
[self.name, self.is_to_s(currentvalue)]
|
|
180
179
|
else
|
|
181
180
|
return "%s changed '%s' to '%s'" %
|
|
182
|
-
[self.name, self.is_to_s, self.should_to_s]
|
|
181
|
+
[self.name, self.is_to_s(currentvalue), self.should_to_s(newvalue)]
|
|
183
182
|
end
|
|
184
183
|
rescue Puppet::Error, Puppet::DevError
|
|
185
184
|
raise
|
|
@@ -203,13 +202,13 @@ class Property < Puppet::Parameter
|
|
|
203
202
|
else
|
|
204
203
|
if self.class.name == :ensure
|
|
205
204
|
event = case self.should
|
|
206
|
-
when :present: (@
|
|
207
|
-
when :absent: (@
|
|
205
|
+
when :present: (@resource.class.name.to_s + "_created").intern
|
|
206
|
+
when :absent: (@resource.class.name.to_s + "_removed").intern
|
|
208
207
|
else
|
|
209
|
-
(@
|
|
208
|
+
(@resource.class.name.to_s + "_changed").intern
|
|
210
209
|
end
|
|
211
210
|
else
|
|
212
|
-
event = (@
|
|
211
|
+
event = (@resource.class.name.to_s + "_changed").intern
|
|
213
212
|
end
|
|
214
213
|
end
|
|
215
214
|
end
|
|
@@ -219,17 +218,11 @@ class Property < Puppet::Parameter
|
|
|
219
218
|
|
|
220
219
|
# initialize our property
|
|
221
220
|
def initialize(hash = {})
|
|
222
|
-
@is = nil
|
|
223
221
|
super
|
|
224
222
|
end
|
|
225
223
|
|
|
226
224
|
def inspect
|
|
227
225
|
str = "Property('%s', " % self.name
|
|
228
|
-
if self.is
|
|
229
|
-
str += "@is = '%s', " % [self.is]
|
|
230
|
-
else
|
|
231
|
-
str += "@is = nil, "
|
|
232
|
-
end
|
|
233
226
|
|
|
234
227
|
if defined? @should and @should
|
|
235
228
|
str += "@should = '%s')" % @should.join(", ")
|
|
@@ -244,7 +237,7 @@ class Property < Puppet::Parameter
|
|
|
244
237
|
# since we cannot fix it. Otherwise, we expect our should value
|
|
245
238
|
# to be an array, and if @is matches any of those values, then
|
|
246
239
|
# we consider it to be in-sync.
|
|
247
|
-
def insync?
|
|
240
|
+
def insync?(is)
|
|
248
241
|
#debug "%s value is '%s', should be '%s'" %
|
|
249
242
|
# [self,self.is.inspect,self.should.inspect]
|
|
250
243
|
unless defined? @should and @should
|
|
@@ -262,7 +255,7 @@ class Property < Puppet::Parameter
|
|
|
262
255
|
|
|
263
256
|
# Look for a matching value
|
|
264
257
|
@should.each { |val|
|
|
265
|
-
if
|
|
258
|
+
if is == val or is == val.to_s
|
|
266
259
|
return true
|
|
267
260
|
end
|
|
268
261
|
}
|
|
@@ -275,18 +268,18 @@ class Property < Puppet::Parameter
|
|
|
275
268
|
# we need to set up a mechanism for pretty printing of the values
|
|
276
269
|
# default to just the values, but this way individual properties can
|
|
277
270
|
# override these methods
|
|
278
|
-
def is_to_s
|
|
279
|
-
|
|
271
|
+
def is_to_s(currentvalue)
|
|
272
|
+
currentvalue
|
|
280
273
|
end
|
|
281
274
|
|
|
282
275
|
# Send a log message.
|
|
283
276
|
def log(msg)
|
|
284
|
-
unless @
|
|
277
|
+
unless @resource[:loglevel]
|
|
285
278
|
self.devfail "Parent %s has no loglevel" %
|
|
286
|
-
@
|
|
279
|
+
@resource.name
|
|
287
280
|
end
|
|
288
281
|
Puppet::Util::Log.create(
|
|
289
|
-
:level => @
|
|
282
|
+
:level => @resource[:loglevel],
|
|
290
283
|
:message => msg,
|
|
291
284
|
:source => self
|
|
292
285
|
)
|
|
@@ -305,8 +298,8 @@ class Property < Puppet::Parameter
|
|
|
305
298
|
unless defined? @noop
|
|
306
299
|
@noop = false
|
|
307
300
|
end
|
|
308
|
-
if self.
|
|
309
|
-
tmp = @noop || self.
|
|
301
|
+
if self.resource.respond_to?(:noop)
|
|
302
|
+
tmp = @noop || self.resource.noop || Puppet[:noop] || false
|
|
310
303
|
else
|
|
311
304
|
tmp = @noop || Puppet[:noop] || false
|
|
312
305
|
end
|
|
@@ -317,7 +310,10 @@ class Property < Puppet::Parameter
|
|
|
317
310
|
# provider. In other words, if the property name is 'gid', we'll call
|
|
318
311
|
# 'provider.gid' to retrieve the current value.
|
|
319
312
|
def retrieve
|
|
320
|
-
|
|
313
|
+
is = provider.send(self.class.name)
|
|
314
|
+
# puts "IS is: " + is.to_s
|
|
315
|
+
# puts "and its an array!!!" if is.is_a? Array
|
|
316
|
+
return is
|
|
321
317
|
end
|
|
322
318
|
|
|
323
319
|
# Set our value, using the provider, an associated block, or both.
|
|
@@ -332,7 +328,7 @@ class Property < Puppet::Parameter
|
|
|
332
328
|
event, tmp = call_valuemethod(name, value)
|
|
333
329
|
end
|
|
334
330
|
unless call == :instead
|
|
335
|
-
if @
|
|
331
|
+
if @resource.provider
|
|
336
332
|
call_provider(value)
|
|
337
333
|
else
|
|
338
334
|
# They haven't provided a block, and our parent does not have
|
|
@@ -353,7 +349,7 @@ class Property < Puppet::Parameter
|
|
|
353
349
|
if defined? @should
|
|
354
350
|
unless @should.is_a?(Array)
|
|
355
351
|
self.devfail "should for %s on %s is not an array" %
|
|
356
|
-
[self.class.name, @
|
|
352
|
+
[self.class.name, @resource.name]
|
|
357
353
|
end
|
|
358
354
|
return @should[0]
|
|
359
355
|
else
|
|
@@ -383,9 +379,10 @@ class Property < Puppet::Parameter
|
|
|
383
379
|
end
|
|
384
380
|
end
|
|
385
381
|
|
|
386
|
-
def should_to_s
|
|
387
|
-
|
|
388
|
-
|
|
382
|
+
def should_to_s(newvalue)
|
|
383
|
+
newvalue = [newvalue] unless newvalue.is_a? Array
|
|
384
|
+
if defined? newvalue
|
|
385
|
+
newvalue.join(" ")
|
|
389
386
|
else
|
|
390
387
|
return nil
|
|
391
388
|
end
|
|
@@ -394,10 +391,10 @@ class Property < Puppet::Parameter
|
|
|
394
391
|
# The default 'sync' method only selects among a list of registered
|
|
395
392
|
# values.
|
|
396
393
|
def sync
|
|
397
|
-
if self.insync?
|
|
398
|
-
self.info "already in sync"
|
|
399
|
-
return nil
|
|
400
|
-
end
|
|
394
|
+
# if self.insync?
|
|
395
|
+
# self.info "already in sync"
|
|
396
|
+
# return nil
|
|
397
|
+
# end
|
|
401
398
|
unless self.class.values
|
|
402
399
|
self.devfail "No values defined for %s" %
|
|
403
400
|
self.class.name
|
|
@@ -415,8 +412,8 @@ class Property < Puppet::Parameter
|
|
|
415
412
|
unless defined? @tags
|
|
416
413
|
@tags = []
|
|
417
414
|
# This might not be true in testing
|
|
418
|
-
if @
|
|
419
|
-
@tags = @
|
|
415
|
+
if @resource.respond_to? :tags
|
|
416
|
+
@tags = @resource.tags
|
|
420
417
|
end
|
|
421
418
|
@tags << self.name
|
|
422
419
|
end
|
|
@@ -424,7 +421,7 @@ class Property < Puppet::Parameter
|
|
|
424
421
|
end
|
|
425
422
|
|
|
426
423
|
def to_s
|
|
427
|
-
return "%s(%s)" % [@
|
|
424
|
+
return "%s(%s)" % [@resource.name,self.name]
|
|
428
425
|
end
|
|
429
426
|
|
|
430
427
|
# Provide a common hook for setting @should, just like params.
|
|
@@ -439,25 +436,25 @@ class Property < Puppet::Parameter
|
|
|
439
436
|
|
|
440
437
|
def self.defaultvalues
|
|
441
438
|
newvalue(:present) do
|
|
442
|
-
if @
|
|
443
|
-
@
|
|
439
|
+
if @resource.provider and @resource.provider.respond_to?(:create)
|
|
440
|
+
@resource.provider.create
|
|
444
441
|
else
|
|
445
|
-
@
|
|
442
|
+
@resource.create
|
|
446
443
|
end
|
|
447
444
|
nil # return nil so the event is autogenerated
|
|
448
445
|
end
|
|
449
446
|
|
|
450
447
|
newvalue(:absent) do
|
|
451
|
-
if @
|
|
452
|
-
@
|
|
448
|
+
if @resource.provider and @resource.provider.respond_to?(:destroy)
|
|
449
|
+
@resource.provider.destroy
|
|
453
450
|
else
|
|
454
|
-
@
|
|
451
|
+
@resource.destroy
|
|
455
452
|
end
|
|
456
453
|
nil # return nil so the event is autogenerated
|
|
457
454
|
end
|
|
458
455
|
|
|
459
456
|
defaultto do
|
|
460
|
-
if @
|
|
457
|
+
if @resource.managed?
|
|
461
458
|
:present
|
|
462
459
|
else
|
|
463
460
|
nil
|
|
@@ -474,15 +471,15 @@ class Property < Puppet::Parameter
|
|
|
474
471
|
end
|
|
475
472
|
end
|
|
476
473
|
|
|
477
|
-
def change_to_s
|
|
474
|
+
def change_to_s(currentvalue, newvalue)
|
|
478
475
|
begin
|
|
479
|
-
if
|
|
476
|
+
if currentvalue == :absent or currentvalue.nil?
|
|
480
477
|
return "created"
|
|
481
|
-
elsif
|
|
478
|
+
elsif newvalue == :absent
|
|
482
479
|
return "removed"
|
|
483
480
|
else
|
|
484
481
|
return "%s changed '%s' to '%s'" %
|
|
485
|
-
[self.name, self.is_to_s, self.should_to_s]
|
|
482
|
+
[self.name, self.is_to_s(currentvalue), self.should_to_s(newvalue)]
|
|
486
483
|
end
|
|
487
484
|
rescue Puppet::Error, Puppet::DevError
|
|
488
485
|
raise
|
|
@@ -498,18 +495,18 @@ class Property < Puppet::Parameter
|
|
|
498
495
|
# to get checked, which means that those other properties do not have
|
|
499
496
|
# @is values set. This seems to be the source of quite a few bugs,
|
|
500
497
|
# although they're mostly logging bugs, not functional ones.
|
|
501
|
-
if prov = @
|
|
498
|
+
if prov = @resource.provider and prov.respond_to?(:exists?)
|
|
502
499
|
result = prov.exists?
|
|
503
|
-
elsif @
|
|
504
|
-
result = @
|
|
500
|
+
elsif @resource.respond_to?(:exists?)
|
|
501
|
+
result = @resource.exists?
|
|
505
502
|
else
|
|
506
503
|
raise Puppet::DevError, "No ability to determine if %s exists" %
|
|
507
|
-
@
|
|
504
|
+
@resource.class.name
|
|
508
505
|
end
|
|
509
506
|
if result
|
|
510
|
-
|
|
507
|
+
return :present
|
|
511
508
|
else
|
|
512
|
-
|
|
509
|
+
return :absent
|
|
513
510
|
end
|
|
514
511
|
end
|
|
515
512
|
|
|
@@ -517,7 +514,7 @@ class Property < Puppet::Parameter
|
|
|
517
514
|
# say it should exist.
|
|
518
515
|
#defaultto :present
|
|
519
516
|
defaultto do
|
|
520
|
-
if @
|
|
517
|
+
if @resource.managed?
|
|
521
518
|
:present
|
|
522
519
|
else
|
|
523
520
|
nil
|
|
@@ -527,4 +524,4 @@ class Property < Puppet::Parameter
|
|
|
527
524
|
end
|
|
528
525
|
end
|
|
529
526
|
|
|
530
|
-
# $Id: property.rb
|
|
527
|
+
# $Id: property.rb 2500 2007-05-09 22:05:32Z luke $
|