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/mount.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'puppet/type/parsedtype'
|
|
2
|
-
|
|
3
1
|
module Puppet
|
|
4
2
|
# We want the mount to refresh when it changes.
|
|
5
3
|
newtype(:mount, :self_refresh => true) do
|
|
@@ -43,7 +41,8 @@ module Puppet
|
|
|
43
41
|
|
|
44
42
|
newvalue(:mounted, :event => :mount_mounted) do
|
|
45
43
|
# Create the mount point if it does not already exist.
|
|
46
|
-
|
|
44
|
+
current_value = self.retrieve
|
|
45
|
+
if current_value.nil? or current_value == :absent
|
|
47
46
|
provider.create
|
|
48
47
|
end
|
|
49
48
|
|
|
@@ -52,24 +51,26 @@ module Puppet
|
|
|
52
51
|
end
|
|
53
52
|
|
|
54
53
|
def retrieve
|
|
55
|
-
|
|
56
|
-
@is = :mounted
|
|
57
|
-
else
|
|
58
|
-
@is = super()
|
|
59
|
-
end
|
|
54
|
+
return provider.mounted? ? :mounted : super()
|
|
60
55
|
end
|
|
61
56
|
|
|
62
57
|
def syncothers
|
|
63
58
|
# We have to flush any changes to disk.
|
|
64
|
-
|
|
59
|
+
currentvalues = @resource.retrieve
|
|
60
|
+
oos = @resource.send(:properties).find_all do |prop|
|
|
61
|
+
unless currentvalues.include?(prop)
|
|
62
|
+
raise Puppet::DevError,
|
|
63
|
+
"Parent has property %s but it doesn't appear in the current vallues",
|
|
64
|
+
[prop.name]
|
|
65
|
+
end
|
|
65
66
|
if prop.name == :ensure
|
|
66
67
|
false
|
|
67
68
|
else
|
|
68
|
-
! prop.insync?
|
|
69
|
+
! prop.insync?(currentvalues[prop])
|
|
69
70
|
end
|
|
70
71
|
end.each { |prop| prop.sync }.length
|
|
71
72
|
if oos > 0
|
|
72
|
-
@
|
|
73
|
+
@resource.flush
|
|
73
74
|
end
|
|
74
75
|
end
|
|
75
76
|
end
|
|
@@ -90,7 +91,7 @@ module Puppet
|
|
|
90
91
|
# Default to the device but with "dsk" replaced with "rdsk".
|
|
91
92
|
defaultto do
|
|
92
93
|
if Facter["operatingsystem"].value == "Solaris"
|
|
93
|
-
device = @
|
|
94
|
+
device = @resource.value(:device)
|
|
94
95
|
if device =~ %r{/dsk/}
|
|
95
96
|
device.sub(%r{/dsk/}, "/rdsk/")
|
|
96
97
|
else
|
|
@@ -114,6 +115,12 @@ module Puppet
|
|
|
114
115
|
|
|
115
116
|
newproperty(:pass) do
|
|
116
117
|
desc "The pass in which the mount is checked."
|
|
118
|
+
|
|
119
|
+
defaultto {
|
|
120
|
+
if @resource.managed?
|
|
121
|
+
0
|
|
122
|
+
end
|
|
123
|
+
}
|
|
117
124
|
end
|
|
118
125
|
|
|
119
126
|
newproperty(:atboot) do
|
|
@@ -124,14 +131,20 @@ module Puppet
|
|
|
124
131
|
newproperty(:dump) do
|
|
125
132
|
desc "Whether to dump the mount. Not all platforms
|
|
126
133
|
support this."
|
|
134
|
+
|
|
135
|
+
defaultto {
|
|
136
|
+
if @resource.managed?
|
|
137
|
+
0
|
|
138
|
+
end
|
|
139
|
+
}
|
|
127
140
|
end
|
|
128
141
|
|
|
129
142
|
newproperty(:target) do
|
|
130
143
|
desc "The file in which to store the mount table. Only used by
|
|
131
144
|
those providers that write to disk (i.e., not NetInfo)."
|
|
132
145
|
|
|
133
|
-
defaultto { if @
|
|
134
|
-
@
|
|
146
|
+
defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
|
|
147
|
+
@resource.class.defaultprovider.default_target
|
|
135
148
|
else
|
|
136
149
|
nil
|
|
137
150
|
end
|
|
@@ -149,7 +162,7 @@ module Puppet
|
|
|
149
162
|
|
|
150
163
|
def value=(value)
|
|
151
164
|
warning "'path' is deprecated for mounts. Please use 'name'."
|
|
152
|
-
@
|
|
165
|
+
@resource[:name] = value
|
|
153
166
|
super
|
|
154
167
|
end
|
|
155
168
|
end
|
|
@@ -162,7 +175,7 @@ module Puppet
|
|
|
162
175
|
newvalues(:true, :false)
|
|
163
176
|
defaultto do
|
|
164
177
|
case Facter.value(:operatingsystem)
|
|
165
|
-
when "
|
|
178
|
+
when "FreeBSD": false
|
|
166
179
|
else
|
|
167
180
|
true
|
|
168
181
|
end
|
|
@@ -186,4 +199,4 @@ module Puppet
|
|
|
186
199
|
end
|
|
187
200
|
end
|
|
188
201
|
|
|
189
|
-
# $Id: mount.rb
|
|
202
|
+
# $Id: mount.rb 2563 2007-06-11 22:30:00Z luke $
|
data/lib/puppet/type/notify.rb
CHANGED
|
@@ -9,11 +9,11 @@ module Puppet
|
|
|
9
9
|
newproperty(:message) do
|
|
10
10
|
desc "The message to be sent to the log."
|
|
11
11
|
def sync
|
|
12
|
-
case @
|
|
12
|
+
case @resource["withpath"]
|
|
13
13
|
when :true:
|
|
14
|
-
|
|
14
|
+
send(@resource[:loglevel], self.should)
|
|
15
15
|
else
|
|
16
|
-
Puppet.send(@
|
|
16
|
+
Puppet.send(@resource[:loglevel], self.should)
|
|
17
17
|
end
|
|
18
18
|
return
|
|
19
19
|
end
|
|
@@ -22,16 +22,15 @@ module Puppet
|
|
|
22
22
|
return
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def insync?
|
|
25
|
+
def insync?(is)
|
|
26
26
|
false
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
defaultto { @
|
|
29
|
+
defaultto { @resource[:name] }
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
newparam(:withpath) do
|
|
33
|
-
desc "Whether to not to show the full object path.
|
|
34
|
-
message at the current loglevel."
|
|
33
|
+
desc "Whether to not to show the full object path."
|
|
35
34
|
defaultto :false
|
|
36
35
|
|
|
37
36
|
newvalues(:true, :false)
|
|
@@ -44,4 +43,4 @@ module Puppet
|
|
|
44
43
|
end
|
|
45
44
|
end
|
|
46
45
|
|
|
47
|
-
# $Id: notify.rb
|
|
46
|
+
# $Id: notify.rb 2525 2007-05-18 03:34:37Z luke $
|
data/lib/puppet/type/package.rb
CHANGED
|
@@ -34,6 +34,10 @@ module Puppet
|
|
|
34
34
|
existing configuration files. This feature is thus destructive
|
|
35
35
|
and should be used with the utmost care.",
|
|
36
36
|
:methods => [:purge]
|
|
37
|
+
feature :versionable, "The provider is capable of interrogating the
|
|
38
|
+
package database for installed version(s), and can select
|
|
39
|
+
which out of a set of available versions of a package to
|
|
40
|
+
install if asked."
|
|
37
41
|
|
|
38
42
|
ensurable do
|
|
39
43
|
desc "What state the package should be in.
|
|
@@ -59,7 +63,7 @@ module Puppet
|
|
|
59
63
|
unless provider.purgeable?
|
|
60
64
|
self.fail(
|
|
61
65
|
"Package provider %s does not purging" %
|
|
62
|
-
@
|
|
66
|
+
@resource[:provider]
|
|
63
67
|
)
|
|
64
68
|
end
|
|
65
69
|
provider.purge
|
|
@@ -72,14 +76,14 @@ module Puppet
|
|
|
72
76
|
unless provider.upgradeable?
|
|
73
77
|
self.fail(
|
|
74
78
|
"Package provider %s does not support specifying 'latest'" %
|
|
75
|
-
@
|
|
79
|
+
@resource[:provider]
|
|
76
80
|
)
|
|
77
81
|
end
|
|
78
82
|
|
|
79
83
|
# Because yum always exits with a 0 exit code, there's a retrieve
|
|
80
84
|
# in the "install" method. So, check the current state now,
|
|
81
85
|
# to compare against later.
|
|
82
|
-
current = self.
|
|
86
|
+
current = self.retrieve
|
|
83
87
|
begin
|
|
84
88
|
provider.update
|
|
85
89
|
rescue => detail
|
|
@@ -94,10 +98,10 @@ module Puppet
|
|
|
94
98
|
end
|
|
95
99
|
|
|
96
100
|
newvalue(/./) do
|
|
97
|
-
unless provider.versionable?
|
|
101
|
+
unless provider.class.versionable?
|
|
98
102
|
self.fail(
|
|
99
103
|
"Package provider %s does not support specifying versions" %
|
|
100
|
-
@
|
|
104
|
+
@resource[:provider]
|
|
101
105
|
)
|
|
102
106
|
end
|
|
103
107
|
begin
|
|
@@ -106,7 +110,7 @@ module Puppet
|
|
|
106
110
|
self.fail "Could not update: %s" % detail
|
|
107
111
|
end
|
|
108
112
|
|
|
109
|
-
if self.
|
|
113
|
+
if self.retrieve == :absent
|
|
110
114
|
:package_installed
|
|
111
115
|
else
|
|
112
116
|
:package_changed
|
|
@@ -118,7 +122,7 @@ module Puppet
|
|
|
118
122
|
|
|
119
123
|
# Override the parent method, because we've got all kinds of
|
|
120
124
|
# funky definitions of 'in sync'.
|
|
121
|
-
def insync?
|
|
125
|
+
def insync?(is)
|
|
122
126
|
@should ||= []
|
|
123
127
|
|
|
124
128
|
@latest = nil unless defined? @latest
|
|
@@ -128,19 +132,19 @@ module Puppet
|
|
|
128
132
|
@should.each { |should|
|
|
129
133
|
case should
|
|
130
134
|
when :present
|
|
131
|
-
unless
|
|
135
|
+
unless is == :absent
|
|
132
136
|
return true
|
|
133
137
|
end
|
|
134
138
|
when :latest
|
|
135
139
|
# Short-circuit packages that are not present
|
|
136
|
-
if
|
|
140
|
+
if is == :absent
|
|
137
141
|
return false
|
|
138
142
|
end
|
|
139
143
|
|
|
140
144
|
unless provider.respond_to?(:latest)
|
|
141
145
|
self.fail(
|
|
142
146
|
"Package type %s does not support specifying 'latest'" %
|
|
143
|
-
@
|
|
147
|
+
@resource[:provider]
|
|
144
148
|
)
|
|
145
149
|
end
|
|
146
150
|
|
|
@@ -152,11 +156,13 @@ module Puppet
|
|
|
152
156
|
@latest = provider.latest
|
|
153
157
|
@lateststamp = Time.now.to_i
|
|
154
158
|
rescue => detail
|
|
155
|
-
|
|
159
|
+
error = Puppet::Error.new("Could not get latest version: %s" % detail.to_s)
|
|
160
|
+
error.set_backtrace(detail.backtrace)
|
|
161
|
+
raise error
|
|
156
162
|
end
|
|
157
163
|
end
|
|
158
164
|
|
|
159
|
-
case
|
|
165
|
+
case is
|
|
160
166
|
when @latest:
|
|
161
167
|
return true
|
|
162
168
|
when :present:
|
|
@@ -164,14 +170,14 @@ module Puppet
|
|
|
164
170
|
# that can't query versions.
|
|
165
171
|
return true
|
|
166
172
|
else
|
|
167
|
-
self.debug "
|
|
168
|
-
[
|
|
173
|
+
self.debug "is is %s, latest %s is %s" %
|
|
174
|
+
[is.inspect, @resource.name, @latest.inspect]
|
|
169
175
|
end
|
|
170
176
|
when :absent
|
|
171
|
-
if
|
|
177
|
+
if is == :absent or is == :purged
|
|
172
178
|
return true
|
|
173
179
|
end
|
|
174
|
-
when
|
|
180
|
+
when is
|
|
175
181
|
return true
|
|
176
182
|
end
|
|
177
183
|
}
|
|
@@ -181,15 +187,15 @@ module Puppet
|
|
|
181
187
|
|
|
182
188
|
# This retrieves the current state. LAK: I think this method is unused.
|
|
183
189
|
def retrieve
|
|
184
|
-
|
|
190
|
+
return @resource.retrieve
|
|
185
191
|
end
|
|
186
192
|
|
|
187
193
|
# Provide a bit more information when logging upgrades.
|
|
188
|
-
def should_to_s
|
|
194
|
+
def should_to_s(newvalue = @should)
|
|
189
195
|
if @latest
|
|
190
196
|
@latest.to_s
|
|
191
197
|
else
|
|
192
|
-
super
|
|
198
|
+
super(newvalue)
|
|
193
199
|
end
|
|
194
200
|
end
|
|
195
201
|
end
|
|
@@ -258,9 +264,9 @@ module Puppet
|
|
|
258
264
|
|
|
259
265
|
munge do |value|
|
|
260
266
|
warning "'type' is deprecated; use 'provider' instead"
|
|
261
|
-
@
|
|
267
|
+
@resource[:provider] = value
|
|
262
268
|
|
|
263
|
-
@
|
|
269
|
+
@resource[:provider]
|
|
264
270
|
end
|
|
265
271
|
end
|
|
266
272
|
|
|
@@ -355,23 +361,6 @@ module Puppet
|
|
|
355
361
|
return object
|
|
356
362
|
end
|
|
357
363
|
|
|
358
|
-
# List all package instances
|
|
359
|
-
def self.list
|
|
360
|
-
# XXX For now, just list the default provider, but we should list
|
|
361
|
-
# all suitables or something, but we need to not list a parent
|
|
362
|
-
# type if a child type gets listed.
|
|
363
|
-
#suitableprovider.each do |provider|
|
|
364
|
-
# p provider.name
|
|
365
|
-
# provider.list
|
|
366
|
-
#end
|
|
367
|
-
|
|
368
|
-
defaultprovider.list
|
|
369
|
-
|
|
370
|
-
self.collect do |pkg|
|
|
371
|
-
pkg
|
|
372
|
-
end
|
|
373
|
-
end
|
|
374
|
-
|
|
375
364
|
# Iterate across all packages of a given type and mark them absent
|
|
376
365
|
# if they are not in the list
|
|
377
366
|
def self.markabsent(pkgtype, packages)
|
|
@@ -379,7 +368,7 @@ module Puppet
|
|
|
379
368
|
self.each do |pkg|
|
|
380
369
|
next unless packages[:provider] == pkgtype
|
|
381
370
|
unless packages.include? pkg
|
|
382
|
-
pkg.
|
|
371
|
+
pkg.provider.send(:ensure, :absent)
|
|
383
372
|
end
|
|
384
373
|
end
|
|
385
374
|
end
|
|
@@ -394,70 +383,45 @@ module Puppet
|
|
|
394
383
|
# The 'query' method returns a hash of info if the package
|
|
395
384
|
# exists and returns nil if it does not.
|
|
396
385
|
def exists?
|
|
397
|
-
@provider.
|
|
386
|
+
@provider.get(:ensure) != :absent
|
|
398
387
|
end
|
|
399
388
|
|
|
400
389
|
# okay, there are two ways that a package could be created...
|
|
401
390
|
# either through the language, in which case the hash's values should
|
|
402
391
|
# be set in 'should', or through comparing against the system, in which
|
|
403
392
|
# case the hash's values should be set in 'is'
|
|
404
|
-
def initialize(
|
|
393
|
+
def initialize(params)
|
|
405
394
|
self.initvars
|
|
406
|
-
|
|
395
|
+
provider = nil
|
|
407
396
|
[:provider, "use"].each { |label|
|
|
408
|
-
if
|
|
409
|
-
|
|
410
|
-
|
|
397
|
+
if params.include?(label)
|
|
398
|
+
provider = params[label]
|
|
399
|
+
params.delete(label)
|
|
411
400
|
end
|
|
412
401
|
}
|
|
413
|
-
if
|
|
414
|
-
self[:provider] =
|
|
402
|
+
if provider
|
|
403
|
+
self[:provider] = provider
|
|
415
404
|
else
|
|
416
405
|
self.setdefaults(:provider)
|
|
417
406
|
end
|
|
418
407
|
|
|
419
|
-
super
|
|
408
|
+
super(params)
|
|
420
409
|
|
|
421
410
|
unless @parameters.include?(:provider)
|
|
422
|
-
raise Puppet::DevError, "No package
|
|
411
|
+
raise Puppet::DevError, "No package provider set"
|
|
423
412
|
end
|
|
424
413
|
end
|
|
425
414
|
|
|
426
415
|
def retrieve
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
return
|
|
416
|
+
@provider.properties.inject({}) do |props, ary|
|
|
417
|
+
name, value = ary
|
|
418
|
+
if prop = @parameters[name]
|
|
419
|
+
props[prop] = value
|
|
432
420
|
end
|
|
433
|
-
|
|
434
|
-
unless self.class.validattr?(param)
|
|
435
|
-
hash.delete(param)
|
|
436
|
-
end
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
setparams(hash)
|
|
440
|
-
else
|
|
441
|
-
# Else just mark all of the properties absent.
|
|
442
|
-
self.class.validproperties.each { |name|
|
|
443
|
-
self.is = [name, :absent]
|
|
444
|
-
}
|
|
421
|
+
props
|
|
445
422
|
end
|
|
446
423
|
end
|
|
447
|
-
|
|
448
|
-
# Set all of the params' "is" value. Most are parameters, but some
|
|
449
|
-
# are properties.
|
|
450
|
-
def setparams(hash)
|
|
451
|
-
# Everything on packages is a parameter except :ensure
|
|
452
|
-
hash.each { |param, value|
|
|
453
|
-
if self.class.attrtype(param) == :property
|
|
454
|
-
self.is = [param, value]
|
|
455
|
-
else
|
|
456
|
-
self[param] = value
|
|
457
|
-
end
|
|
458
|
-
}
|
|
459
|
-
end
|
|
460
424
|
end # Puppet.type(:package)
|
|
461
425
|
end
|
|
462
426
|
|
|
463
|
-
# $Id: package.rb
|
|
427
|
+
# $Id: package.rb 2620 2007-06-18 21:55:05Z luke $
|
data/lib/puppet/type/pfile.rb
CHANGED
|
@@ -96,16 +96,16 @@ module Puppet
|
|
|
96
96
|
# we have to do it after all of the objects
|
|
97
97
|
# have been instantiated.
|
|
98
98
|
if bucketobj = Puppet::Type.type(:filebucket)[value]
|
|
99
|
-
@
|
|
99
|
+
@resource.bucket = bucketobj.bucket
|
|
100
100
|
bucketobj.title
|
|
101
101
|
else
|
|
102
102
|
# Set it to the string; finish() turns it into a
|
|
103
103
|
# filebucket.
|
|
104
|
-
@
|
|
104
|
+
@resource.bucket = value
|
|
105
105
|
value
|
|
106
106
|
end
|
|
107
107
|
when Puppet::Network::Client.client(:Dipper):
|
|
108
|
-
@
|
|
108
|
+
@resource.bucket = value
|
|
109
109
|
value.name
|
|
110
110
|
else
|
|
111
111
|
self.fail "Invalid backup type %s" %
|
|
@@ -259,7 +259,7 @@ module Puppet
|
|
|
259
259
|
end
|
|
260
260
|
|
|
261
261
|
# List files, but only one level deep.
|
|
262
|
-
def self.
|
|
262
|
+
def self.instances(base = "/")
|
|
263
263
|
unless FileTest.directory?(base)
|
|
264
264
|
return []
|
|
265
265
|
end
|
|
@@ -823,22 +823,21 @@ module Puppet
|
|
|
823
823
|
def retrieve
|
|
824
824
|
unless stat = self.stat(true)
|
|
825
825
|
self.debug "File does not exist"
|
|
826
|
-
properties().each { |property|
|
|
827
|
-
property.is = :absent
|
|
828
|
-
}
|
|
829
|
-
|
|
830
826
|
# If the file doesn't exist but we have a source, then call
|
|
831
827
|
# retrieve on that property
|
|
828
|
+
|
|
829
|
+
propertyvalues = properties().inject({}) { |hash, property|
|
|
830
|
+
hash[property] = :absent
|
|
831
|
+
hash
|
|
832
|
+
}
|
|
833
|
+
|
|
832
834
|
if @parameters.include?(:source)
|
|
833
|
-
@parameters[:source].retrieve
|
|
835
|
+
propertyvalues[:source] = @parameters[:source].retrieve
|
|
834
836
|
end
|
|
835
|
-
|
|
836
|
-
return
|
|
837
|
+
return propertyvalues
|
|
837
838
|
end
|
|
838
839
|
|
|
839
|
-
|
|
840
|
-
property.retrieve
|
|
841
|
-
}
|
|
840
|
+
return currentpropvalues()
|
|
842
841
|
end
|
|
843
842
|
|
|
844
843
|
# This recurses against the remote source and makes sure the local
|
|
@@ -929,8 +928,8 @@ module Puppet
|
|
|
929
928
|
else
|
|
930
929
|
# If they didn't pass in a sum, then tell checksum to
|
|
931
930
|
# figure it out.
|
|
932
|
-
@parameters[:checksum].retrieve
|
|
933
|
-
@parameters[:checksum].checksum =
|
|
931
|
+
currentvalue = @parameters[:checksum].retrieve
|
|
932
|
+
@parameters[:checksum].checksum = currentvalue
|
|
934
933
|
end
|
|
935
934
|
end
|
|
936
935
|
end
|
|
@@ -969,7 +968,7 @@ module Puppet
|
|
|
969
968
|
# We have to hack this just a little bit, because otherwise we'll get
|
|
970
969
|
# an error when the target and the contents are created as properties on
|
|
971
970
|
# the far side.
|
|
972
|
-
def to_trans
|
|
971
|
+
def to_trans(retrieve = true)
|
|
973
972
|
obj = super
|
|
974
973
|
if obj[:target] == :notlink
|
|
975
974
|
obj.delete(:target)
|
|
@@ -977,6 +976,18 @@ module Puppet
|
|
|
977
976
|
obj
|
|
978
977
|
end
|
|
979
978
|
|
|
979
|
+
def localfileserver
|
|
980
|
+
unless defined? @@localfileserver
|
|
981
|
+
args = {
|
|
982
|
+
:Local => true,
|
|
983
|
+
:Mount => { "/" => "localhost" },
|
|
984
|
+
:Config => false
|
|
985
|
+
}
|
|
986
|
+
@@localfileserver = Puppet::Network::Handler.handler(:fileserver).new(args)
|
|
987
|
+
end
|
|
988
|
+
@@localfileserver
|
|
989
|
+
end
|
|
990
|
+
|
|
980
991
|
def uri2obj(source)
|
|
981
992
|
sourceobj = FileSource.new
|
|
982
993
|
path = nil
|
|
@@ -997,25 +1008,24 @@ module Puppet
|
|
|
997
1008
|
|
|
998
1009
|
case uri.scheme
|
|
999
1010
|
when "file":
|
|
1000
|
-
|
|
1001
|
-
@@localfileserver = Puppet::Network::Handler.handler(:fileserver).new(
|
|
1002
|
-
:Local => true,
|
|
1003
|
-
:Mount => { "/" => "localhost" },
|
|
1004
|
-
:Config => false
|
|
1005
|
-
)
|
|
1006
|
-
#@@localfileserver.mount("/", "localhost")
|
|
1007
|
-
end
|
|
1008
|
-
sourceobj.server = @@localfileserver
|
|
1011
|
+
sourceobj.server = localfileserver
|
|
1009
1012
|
path = "/localhost" + uri.path
|
|
1010
1013
|
when "puppet":
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
args[:Port] = uri.port
|
|
1014
|
-
end
|
|
1015
|
-
# FIXME We should cache a copy of this server
|
|
1016
|
-
#sourceobj.server = Puppet::Network::NetworkClient.new(args)
|
|
1014
|
+
# FIXME: We should cache clients by uri.host + uri.port
|
|
1015
|
+
# not by the full source path
|
|
1017
1016
|
unless @clients.include?(source)
|
|
1018
|
-
|
|
1017
|
+
host = uri.host
|
|
1018
|
+
host ||= Puppet[:server] unless Puppet[:name] == "puppet"
|
|
1019
|
+
if host.nil?
|
|
1020
|
+
server = localfileserver
|
|
1021
|
+
else
|
|
1022
|
+
args = { :Server => host }
|
|
1023
|
+
if uri.port
|
|
1024
|
+
args[:Port] = uri.port
|
|
1025
|
+
end
|
|
1026
|
+
server = Puppet::Network::Client.file.new(args)
|
|
1027
|
+
end
|
|
1028
|
+
@clients[source] = server
|
|
1019
1029
|
end
|
|
1020
1030
|
sourceobj.server = @clients[source]
|
|
1021
1031
|
|
|
@@ -1028,7 +1038,7 @@ module Puppet
|
|
|
1028
1038
|
self.fail "Invalid source path %s" % tmp
|
|
1029
1039
|
end
|
|
1030
1040
|
else
|
|
1031
|
-
self.fail "Got other
|
|
1041
|
+
self.fail "Got other URL type '%s' from %s" %
|
|
1032
1042
|
[uri.scheme, source]
|
|
1033
1043
|
end
|
|
1034
1044
|
|
|
@@ -1118,7 +1128,7 @@ module Puppet
|
|
|
1118
1128
|
|
|
1119
1129
|
# Override the parent method, because we don't want to generate changes
|
|
1120
1130
|
# when the file is missing and there is no 'ensure' state.
|
|
1121
|
-
def propertychanges
|
|
1131
|
+
def propertychanges(currentvalues)
|
|
1122
1132
|
unless self.stat
|
|
1123
1133
|
found = false
|
|
1124
1134
|
([:ensure] + CREATORS).each do |prop|
|
|
@@ -1137,14 +1147,13 @@ module Puppet
|
|
|
1137
1147
|
# There are some cases where all of the work does not get done on
|
|
1138
1148
|
# file creation/modification, so we have to do some extra checking.
|
|
1139
1149
|
def property_fix
|
|
1140
|
-
|
|
1141
|
-
next unless thing.is_a? Puppet::Property
|
|
1150
|
+
properties.each do |thing|
|
|
1142
1151
|
next unless [:mode, :owner, :group].include?(thing.name)
|
|
1143
1152
|
|
|
1144
1153
|
# Make sure we get a new stat objct
|
|
1145
1154
|
self.stat(true)
|
|
1146
|
-
thing.retrieve
|
|
1147
|
-
unless thing.insync?
|
|
1155
|
+
currentvalue = thing.retrieve
|
|
1156
|
+
unless thing.insync?(currentvalue)
|
|
1148
1157
|
thing.sync
|
|
1149
1158
|
end
|
|
1150
1159
|
end
|
|
@@ -1159,7 +1168,7 @@ module Puppet
|
|
|
1159
1168
|
|
|
1160
1169
|
# We put all of the properties in separate files, because there are so many
|
|
1161
1170
|
# of them. The order these are loaded is important, because it determines
|
|
1162
|
-
# the order they are in the property
|
|
1171
|
+
# the order they are in the property lit.
|
|
1163
1172
|
require 'puppet/type/pfile/checksum'
|
|
1164
1173
|
require 'puppet/type/pfile/content' # can create the file
|
|
1165
1174
|
require 'puppet/type/pfile/source' # can create the file
|
|
@@ -1170,4 +1179,4 @@ module Puppet
|
|
|
1170
1179
|
require 'puppet/type/pfile/mode'
|
|
1171
1180
|
require 'puppet/type/pfile/type'
|
|
1172
1181
|
end
|
|
1173
|
-
# $Id: pfile.rb
|
|
1182
|
+
# $Id: pfile.rb 2610 2007-06-18 19:29:56Z lutter $
|