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
|
@@ -14,19 +14,19 @@ module Puppet
|
|
|
14
14
|
# Switch the goals of the property, thus running the change in reverse.
|
|
15
15
|
def backward
|
|
16
16
|
@property.should = @is
|
|
17
|
-
@property.retrieve
|
|
17
|
+
@is = @property.retrieve
|
|
18
18
|
|
|
19
19
|
unless defined? @transaction
|
|
20
20
|
raise Puppet::Error,
|
|
21
21
|
"PropertyChange '%s' tried to be executed outside of transaction" %
|
|
22
22
|
self
|
|
23
23
|
end
|
|
24
|
-
unless @property.insync?
|
|
24
|
+
unless @property.insync?(@is)
|
|
25
25
|
@property.info "Backing %s" % self
|
|
26
26
|
return self.go
|
|
27
27
|
else
|
|
28
28
|
@property.debug "rollback is already in sync: %s vs. %s" %
|
|
29
|
-
[@
|
|
29
|
+
[@is, @property.should.inspect]
|
|
30
30
|
return nil
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -42,7 +42,7 @@ module Puppet
|
|
|
42
42
|
@property.warning("Property '%s' returned invalid event '%s'; resetting to default" %
|
|
43
43
|
[@property.class,event])
|
|
44
44
|
|
|
45
|
-
event = @property.
|
|
45
|
+
event = @property.resource.class.name.id2name + "_changed"
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
Puppet::Event.new(
|
|
@@ -52,14 +52,14 @@ module Puppet
|
|
|
52
52
|
)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
def initialize(property)
|
|
55
|
+
def initialize(property, currentvalue)
|
|
56
56
|
unless property.is_a?(Puppet::Type::Property)
|
|
57
57
|
raise Puppet::DevError, "Got a %s instead of a property" %
|
|
58
58
|
property.class
|
|
59
59
|
end
|
|
60
60
|
@property = property
|
|
61
61
|
@path = [property.path,"change"].flatten
|
|
62
|
-
@is =
|
|
62
|
+
@is = currentvalue
|
|
63
63
|
|
|
64
64
|
@should = property.should
|
|
65
65
|
|
|
@@ -92,7 +92,7 @@ module Puppet
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
return events.collect { |name|
|
|
95
|
-
@report = @property.log(@property.change_to_s)
|
|
95
|
+
@report = @property.log(@property.change_to_s(@is, @should))
|
|
96
96
|
event(name)
|
|
97
97
|
}
|
|
98
98
|
end
|
|
@@ -114,14 +114,14 @@ module Puppet
|
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
def skip?
|
|
117
|
-
if @property.insync?
|
|
117
|
+
if @property.insync?(@is)
|
|
118
118
|
@property.info "Already in sync"
|
|
119
119
|
return true
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
if @property.noop
|
|
123
123
|
@property.log "is %s, should be %s (noop)" %
|
|
124
|
-
[property.is_to_s, property.should_to_s]
|
|
124
|
+
[property.is_to_s(@is), property.should_to_s(@should)]
|
|
125
125
|
#@property.debug "%s is noop" % @property
|
|
126
126
|
return true
|
|
127
127
|
end
|
|
@@ -129,15 +129,15 @@ module Puppet
|
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
def source
|
|
132
|
-
self.proxy || @property.
|
|
132
|
+
self.proxy || @property.resource
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
def to_s
|
|
136
136
|
return "change %s.%s(%s)" %
|
|
137
|
-
[@transaction.object_id, self.object_id, @property.change_to_s]
|
|
137
|
+
[@transaction.object_id, self.object_id, @property.change_to_s(@is, @should)]
|
|
138
138
|
#return "change %s.%s" % [@transaction.object_id, self.object_id]
|
|
139
139
|
end
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
-
# $Id: propertychange.rb
|
|
143
|
+
# $Id: propertychange.rb 2500 2007-05-09 22:05:32Z luke $
|
data/lib/puppet/provider.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
class Puppet::Provider
|
|
3
3
|
include Puppet::Util
|
|
4
4
|
include Puppet::Util::Errors
|
|
5
|
+
include Puppet::Util::Warnings
|
|
6
|
+
extend Puppet::Util::Warnings
|
|
5
7
|
|
|
6
8
|
Puppet::Util.logmethods(self, true)
|
|
7
9
|
|
|
@@ -10,11 +12,21 @@ class Puppet::Provider
|
|
|
10
12
|
include Puppet::Util, Puppet::Util::Docs
|
|
11
13
|
include Puppet::Util::Logging
|
|
12
14
|
attr_accessor :name
|
|
15
|
+
|
|
16
|
+
# The source parameter exists so that providers using the same
|
|
17
|
+
# source can specify this, so reading doesn't attempt to read the
|
|
18
|
+
# same package multiple times.
|
|
19
|
+
attr_writer :source
|
|
20
|
+
|
|
21
|
+
# LAK 2007-05-09: Keep the model stuff around for backward compatibility
|
|
13
22
|
attr_reader :model
|
|
23
|
+
attr_accessor :resource_type
|
|
14
24
|
attr_writer :doc
|
|
15
25
|
end
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
# LAK 2007-05-09: Keep the model stuff around for backward compatibility
|
|
28
|
+
attr_reader :model
|
|
29
|
+
attr_accessor :resource
|
|
18
30
|
|
|
19
31
|
def self.command(name)
|
|
20
32
|
name = symbolize(name)
|
|
@@ -97,6 +109,12 @@ class Puppet::Provider
|
|
|
97
109
|
end
|
|
98
110
|
end
|
|
99
111
|
|
|
112
|
+
# The method for returning a list of provider instances. Note that it returns providers, preferably with values already
|
|
113
|
+
# filled in, not resources.
|
|
114
|
+
def self.instances
|
|
115
|
+
raise Puppet::DevError, "Provider %s has not defined the 'instances' class method" % self.name
|
|
116
|
+
end
|
|
117
|
+
|
|
100
118
|
# Create the methods for a given command.
|
|
101
119
|
def self.make_command_methods(name)
|
|
102
120
|
# Now define a method for that command
|
|
@@ -125,12 +143,21 @@ class Puppet::Provider
|
|
|
125
143
|
end
|
|
126
144
|
end
|
|
127
145
|
|
|
128
|
-
# Create getter/setter methods for each property our
|
|
146
|
+
# Create getter/setter methods for each property our resource type supports.
|
|
129
147
|
# They all get stored in @property_hash. This method is useful
|
|
130
148
|
# for those providers that use prefetch and flush.
|
|
131
149
|
def self.mkmodelmethods
|
|
132
|
-
|
|
150
|
+
warnonce "Provider.mkmodelmethods is deprecated; use Provider.mk_resource_methods"
|
|
151
|
+
mk_resource_methods
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Create getter/setter methods for each property our resource type supports.
|
|
155
|
+
# They all get stored in @property_hash. This method is useful
|
|
156
|
+
# for those providers that use prefetch and flush.
|
|
157
|
+
def self.mk_resource_methods
|
|
158
|
+
[resource_type.validproperties, resource_type.parameters].flatten.each do |attr|
|
|
133
159
|
attr = symbolize(attr)
|
|
160
|
+
next if attr == :name
|
|
134
161
|
define_method(attr) do
|
|
135
162
|
@property_hash[attr] || :absent
|
|
136
163
|
end
|
|
@@ -141,16 +168,6 @@ class Puppet::Provider
|
|
|
141
168
|
end
|
|
142
169
|
end
|
|
143
170
|
|
|
144
|
-
# Add the feature module immediately, so its methods are available to the
|
|
145
|
-
# providers.
|
|
146
|
-
def self.model=(model)
|
|
147
|
-
@model = model
|
|
148
|
-
#if mod = model.feature_module
|
|
149
|
-
# extend(mod)
|
|
150
|
-
# include(mod)
|
|
151
|
-
#end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
171
|
self.initvars
|
|
155
172
|
|
|
156
173
|
# Define one or more binaries we'll be using. If a block is passed, yield the name
|
|
@@ -178,29 +195,48 @@ class Puppet::Provider
|
|
|
178
195
|
end
|
|
179
196
|
end
|
|
180
197
|
|
|
198
|
+
# Retrieve the data source. Defaults to the provider name.
|
|
199
|
+
def self.source
|
|
200
|
+
unless defined? @source
|
|
201
|
+
@source = self.name
|
|
202
|
+
end
|
|
203
|
+
@source
|
|
204
|
+
end
|
|
205
|
+
|
|
181
206
|
# Check whether this implementation is suitable for our platform.
|
|
182
|
-
def self.suitable?
|
|
207
|
+
def self.suitable?(short = true)
|
|
183
208
|
# A single false result is sufficient to turn the whole thing down.
|
|
184
209
|
# We don't return 'true' until the very end, though, so that every
|
|
185
210
|
# confine is tested.
|
|
211
|
+
missing = {}
|
|
186
212
|
@confines.each do |check, values|
|
|
187
213
|
case check
|
|
188
214
|
when :exists:
|
|
189
215
|
values.each do |value|
|
|
190
216
|
unless value and FileTest.exists? value
|
|
191
217
|
debug "Not suitable: missing %s" % value
|
|
192
|
-
return false
|
|
218
|
+
return false if short
|
|
219
|
+
missing[:exists] ||= []
|
|
220
|
+
missing[:exists] << value
|
|
193
221
|
end
|
|
194
222
|
end
|
|
195
223
|
when :true:
|
|
196
224
|
values.each do |v|
|
|
197
225
|
debug "Not suitable: false value"
|
|
198
|
-
|
|
226
|
+
unless v
|
|
227
|
+
return false if short
|
|
228
|
+
missing[:true] ||= 0
|
|
229
|
+
missing[:true] += 1
|
|
230
|
+
end
|
|
199
231
|
end
|
|
200
232
|
when :false:
|
|
201
233
|
values.each do |v|
|
|
202
234
|
debug "Not suitable: true value"
|
|
203
|
-
|
|
235
|
+
if v and short
|
|
236
|
+
return false if short
|
|
237
|
+
missing[:false] ||= 0
|
|
238
|
+
missing[:false] += 1
|
|
239
|
+
end
|
|
204
240
|
end
|
|
205
241
|
else # Just delegate everything else to facter
|
|
206
242
|
if result = Facter.value(check)
|
|
@@ -211,15 +247,23 @@ class Puppet::Provider
|
|
|
211
247
|
end
|
|
212
248
|
unless found
|
|
213
249
|
debug "Not suitable: %s not in %s" % [check, values]
|
|
214
|
-
return false
|
|
250
|
+
return false if short
|
|
251
|
+
missing[:facter] ||= {}
|
|
252
|
+
missing[:facter][check] = values
|
|
215
253
|
end
|
|
216
254
|
else
|
|
217
|
-
return false
|
|
255
|
+
return false if short
|
|
256
|
+
missing[:facter] ||= {}
|
|
257
|
+
missing[:facter][check] = values
|
|
218
258
|
end
|
|
219
259
|
end
|
|
220
260
|
end
|
|
221
261
|
|
|
222
|
-
|
|
262
|
+
if short
|
|
263
|
+
return true
|
|
264
|
+
else
|
|
265
|
+
return missing
|
|
266
|
+
end
|
|
223
267
|
end
|
|
224
268
|
|
|
225
269
|
# Does this provider support the specified parameter?
|
|
@@ -227,8 +271,8 @@ class Puppet::Provider
|
|
|
227
271
|
if param.is_a?(Class)
|
|
228
272
|
klass = param
|
|
229
273
|
else
|
|
230
|
-
unless klass =
|
|
231
|
-
raise Puppet::DevError, "'%s' is not a valid parameter for %s" % [param,
|
|
274
|
+
unless klass = resource_type.attrclass(param)
|
|
275
|
+
raise Puppet::DevError, "'%s' is not a valid parameter for %s" % [param, resource_type.name]
|
|
232
276
|
end
|
|
233
277
|
end
|
|
234
278
|
return true unless features = klass.required_features
|
|
@@ -242,8 +286,8 @@ class Puppet::Provider
|
|
|
242
286
|
|
|
243
287
|
def self.to_s
|
|
244
288
|
unless defined? @str
|
|
245
|
-
if self.
|
|
246
|
-
@str = "%s provider %s" % [
|
|
289
|
+
if self.resource_type
|
|
290
|
+
@str = "%s provider %s" % [resource_type.name, self.name]
|
|
247
291
|
else
|
|
248
292
|
@str = "unattached provider %s" % [self.name]
|
|
249
293
|
end
|
|
@@ -275,8 +319,9 @@ class Puppet::Provider
|
|
|
275
319
|
end
|
|
276
320
|
end
|
|
277
321
|
|
|
278
|
-
# Remove the reference to the
|
|
322
|
+
# Remove the reference to the resource, so GC can clean up.
|
|
279
323
|
def clear
|
|
324
|
+
@resource = nil
|
|
280
325
|
@model = nil
|
|
281
326
|
end
|
|
282
327
|
|
|
@@ -285,18 +330,44 @@ class Puppet::Provider
|
|
|
285
330
|
self.class.command(name)
|
|
286
331
|
end
|
|
287
332
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
@property_hash
|
|
333
|
+
# Get a parameter value.
|
|
334
|
+
def get(param)
|
|
335
|
+
@property_hash[symbolize(param)] || :absent
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
def initialize(resource = nil)
|
|
339
|
+
if resource.is_a?(Hash)
|
|
340
|
+
@property_hash = resource.dup
|
|
341
|
+
elsif resource
|
|
342
|
+
@resource = resource if resource
|
|
343
|
+
# LAK 2007-05-09: Keep the model stuff around for backward compatibility
|
|
344
|
+
@model = resource
|
|
345
|
+
@property_hash = {}
|
|
346
|
+
else
|
|
347
|
+
@property_hash = {}
|
|
348
|
+
end
|
|
291
349
|
end
|
|
292
350
|
|
|
293
351
|
def name
|
|
294
|
-
@
|
|
352
|
+
if n = @property_hash[:name]
|
|
353
|
+
return n
|
|
354
|
+
elsif self.resource
|
|
355
|
+
resource.name
|
|
356
|
+
else
|
|
357
|
+
raise Puppet::DevError, "No resource and no name in property hash"
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
# Set passed params as the current values.
|
|
362
|
+
def set(params)
|
|
363
|
+
params.each do |param, value|
|
|
364
|
+
@property_hash[symbolize(param)] = value
|
|
365
|
+
end
|
|
295
366
|
end
|
|
296
367
|
|
|
297
368
|
def to_s
|
|
298
|
-
"%s(provider=%s)" % [@
|
|
369
|
+
"%s(provider=%s)" % [@resource.to_s, self.class.name]
|
|
299
370
|
end
|
|
300
371
|
end
|
|
301
372
|
|
|
302
|
-
# $Id: provider.rb
|
|
373
|
+
# $Id: provider.rb 2588 2007-06-15 14:05:10Z luke $
|
|
@@ -62,7 +62,7 @@ Puppet::Type.type(:cron).provide(:crontab,
|
|
|
62
62
|
if details[:name]
|
|
63
63
|
str = "# Puppet Name: %s\n" % details[:name]
|
|
64
64
|
end
|
|
65
|
-
if details[:environment] and details[:environment] != :absent
|
|
65
|
+
if details[:environment] and details[:environment] != :absent and details[:environment] != [:absent]
|
|
66
66
|
details[:environment].each do |env|
|
|
67
67
|
str += env + "\n"
|
|
68
68
|
end
|
|
@@ -84,10 +84,8 @@ Puppet::Type.type(:cron).provide(:crontab,
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
# See if we can match the hash against an existing cron job.
|
|
87
|
-
def self.match(hash)
|
|
88
|
-
|
|
89
|
-
obj.value(:user) == hash[:user] and obj.value(:command) == hash[:command]
|
|
90
|
-
}.each do |obj|
|
|
87
|
+
def self.match(hash, resources)
|
|
88
|
+
resources.each do |name, obj|
|
|
91
89
|
# we now have a cron job whose command exactly matches
|
|
92
90
|
# let's see if the other fields match
|
|
93
91
|
|
|
@@ -152,9 +150,10 @@ Puppet::Type.type(:cron).provide(:crontab,
|
|
|
152
150
|
record[:name] = name
|
|
153
151
|
name = nil
|
|
154
152
|
end
|
|
155
|
-
|
|
153
|
+
if envs.empty?
|
|
154
|
+
record[:environment] = :absent
|
|
155
|
+
else
|
|
156
156
|
record[:environment] = envs
|
|
157
|
-
envs = []
|
|
158
157
|
end
|
|
159
158
|
end
|
|
160
159
|
}.reject { |record| record[:skip] }
|
|
@@ -184,4 +183,4 @@ Puppet::Type.type(:cron).provide(:crontab,
|
|
|
184
183
|
end
|
|
185
184
|
end
|
|
186
185
|
|
|
187
|
-
# $Id: crontab.rb
|
|
186
|
+
# $Id: crontab.rb 2624 2007-06-19 01:49:19Z luke $
|
|
@@ -12,18 +12,18 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
|
12
12
|
|
|
13
13
|
def addcmd
|
|
14
14
|
cmd = [command(:add)]
|
|
15
|
-
if gid = @
|
|
15
|
+
if gid = @resource.should(:gid)
|
|
16
16
|
unless gid == :absent
|
|
17
17
|
cmd << flag(:gid) << gid
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
if @
|
|
20
|
+
if @resource[:allowdupe] == :true
|
|
21
21
|
cmd << "-o"
|
|
22
22
|
end
|
|
23
|
-
cmd << @
|
|
23
|
+
cmd << @resource[:name]
|
|
24
24
|
|
|
25
25
|
return cmd
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
# $Id: groupadd.rb
|
|
29
|
+
# $Id: groupadd.rb 2501 2007-05-09 23:08:42Z luke $
|
|
@@ -11,8 +11,8 @@ Puppet::Type.type(:group).provide :pw, :parent => Puppet::Provider::NameService:
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def addcmd
|
|
14
|
-
cmd = [command(:pw), "groupadd", @
|
|
15
|
-
if gid = @
|
|
14
|
+
cmd = [command(:pw), "groupadd", @resource[:name]]
|
|
15
|
+
if gid = @resource.should(:gid)
|
|
16
16
|
unless gid == :absent
|
|
17
17
|
cmd << flag(:gid) << gid
|
|
18
18
|
end
|
|
@@ -28,4 +28,4 @@ Puppet::Type.type(:group).provide :pw, :parent => Puppet::Provider::NameService:
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
# $Id: pw.rb
|
|
31
|
+
# $Id: pw.rb 2501 2007-05-09 23:08:42Z luke $
|
|
@@ -14,15 +14,15 @@ module Puppet::Provider::Mount
|
|
|
14
14
|
if self.options and self.options != :absent
|
|
15
15
|
args << "-o" << self.options
|
|
16
16
|
end
|
|
17
|
-
args << @
|
|
17
|
+
args << @resource[:name]
|
|
18
18
|
|
|
19
19
|
mountcmd(*args)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def remount
|
|
23
23
|
info "Remounting"
|
|
24
|
-
if @
|
|
25
|
-
mountcmd "-o", "remount", @
|
|
24
|
+
if @resource[:remounts] == :true
|
|
25
|
+
mountcmd "-o", "remount", @resource[:name]
|
|
26
26
|
else
|
|
27
27
|
unmount()
|
|
28
28
|
mount()
|
|
@@ -31,7 +31,7 @@ module Puppet::Provider::Mount
|
|
|
31
31
|
|
|
32
32
|
# This only works when the mount point is synced to the fstab.
|
|
33
33
|
def unmount
|
|
34
|
-
umount @
|
|
34
|
+
umount @resource[:name]
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
# Is the mount currently mounted?
|
|
@@ -45,13 +45,13 @@ module Puppet::Provider::Mount
|
|
|
45
45
|
execute(df).split("\n").find do |line|
|
|
46
46
|
fs = line.split(/\s+/)[-1]
|
|
47
47
|
if platform == "Darwin"
|
|
48
|
-
fs == "/private/var/automount" + @
|
|
49
|
-
fs == @
|
|
48
|
+
fs == "/private/var/automount" + @resource[:name] or
|
|
49
|
+
fs == @resource[:name]
|
|
50
50
|
else
|
|
51
|
-
fs == @
|
|
51
|
+
fs == @resource[:name]
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
# $Id: mount.rb
|
|
57
|
+
# $Id: mount.rb 2501 2007-05-09 23:08:42Z luke $
|