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
|
@@ -8,6 +8,9 @@ class Puppet::Network::Handler # :nodoc:
|
|
|
8
8
|
# to the client. Alternatively, accept an md5 sum and return the
|
|
9
9
|
# associated content.
|
|
10
10
|
class FileBucket < Handler
|
|
11
|
+
desc "The interface to Puppet's FileBucket system. Can be used to store
|
|
12
|
+
files in and retrieve files from a filebucket."
|
|
13
|
+
|
|
11
14
|
@interface = XMLRPC::Service::Interface.new("puppetbucket") { |iface|
|
|
12
15
|
iface.add_method("string addfile(string, string)")
|
|
13
16
|
iface.add_method("string getfile(string)")
|
|
@@ -177,4 +180,4 @@ class Puppet::Network::Handler # :nodoc:
|
|
|
177
180
|
end
|
|
178
181
|
end
|
|
179
182
|
|
|
180
|
-
# $Id: filebucket.rb
|
|
183
|
+
# $Id: filebucket.rb 2479 2007-05-07 22:29:44Z luke $
|
|
@@ -3,10 +3,14 @@ require 'puppet/network/authstore'
|
|
|
3
3
|
require 'webrick/httpstatus'
|
|
4
4
|
require 'cgi'
|
|
5
5
|
require 'delegate'
|
|
6
|
+
require 'sync'
|
|
6
7
|
|
|
7
8
|
class Puppet::Network::Handler
|
|
9
|
+
AuthStoreError = Puppet::AuthStoreError
|
|
8
10
|
class FileServerError < Puppet::Error; end
|
|
9
11
|
class FileServer < Handler
|
|
12
|
+
desc "The interface to Puppet's fileserving abilities."
|
|
13
|
+
|
|
10
14
|
attr_accessor :local
|
|
11
15
|
|
|
12
16
|
CHECKPARAMS = [:mode, :type, :owner, :group, :checksum]
|
|
@@ -40,20 +44,18 @@ class Puppet::Network::Handler
|
|
|
40
44
|
end
|
|
41
45
|
|
|
42
46
|
obj = nil
|
|
43
|
-
unless obj = mount.
|
|
47
|
+
unless obj = mount.getfileobject(path, links)
|
|
44
48
|
return ""
|
|
45
49
|
end
|
|
46
50
|
|
|
51
|
+
currentvalues = mount.check(obj)
|
|
52
|
+
|
|
47
53
|
desc = []
|
|
48
54
|
CHECKPARAMS.each { |check|
|
|
49
|
-
if
|
|
50
|
-
|
|
51
|
-
mount.debug "Manually retrieving info for %s" % check
|
|
52
|
-
property.retrieve
|
|
53
|
-
end
|
|
54
|
-
desc << property.is
|
|
55
|
+
if value = currentvalues[check]
|
|
56
|
+
desc << value
|
|
55
57
|
else
|
|
56
|
-
if check == "checksum" and
|
|
58
|
+
if check == "checksum" and currentvalues[:type] == "file"
|
|
57
59
|
mount.notice "File %s does not have data for %s" %
|
|
58
60
|
[obj.name, check]
|
|
59
61
|
end
|
|
@@ -96,6 +98,7 @@ class Puppet::Network::Handler
|
|
|
96
98
|
self.mount(dir, name)
|
|
97
99
|
end
|
|
98
100
|
}
|
|
101
|
+
self.mount(nil, MODULES)
|
|
99
102
|
else
|
|
100
103
|
@passedconfig = false
|
|
101
104
|
readconfig(false) # don't check the file the first time.
|
|
@@ -420,31 +423,62 @@ class Puppet::Network::Handler
|
|
|
420
423
|
class Mount < Puppet::Network::AuthStore
|
|
421
424
|
attr_reader :name
|
|
422
425
|
|
|
426
|
+
@@syncs = {}
|
|
427
|
+
|
|
428
|
+
@@files = {}
|
|
429
|
+
|
|
423
430
|
Puppet::Util.logmethods(self, true)
|
|
424
431
|
|
|
425
|
-
|
|
426
|
-
# we can pass them to the client.
|
|
427
|
-
def check(dir, links)
|
|
432
|
+
def getfileobject(dir, links)
|
|
428
433
|
unless FileTest.exists?(dir)
|
|
429
434
|
self.notice "File source %s does not exist" % dir
|
|
430
435
|
return nil
|
|
431
436
|
end
|
|
432
437
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
438
|
+
return fileobj(dir, links)
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
# Run 'retrieve' on a file. This gets the actual parameters, so
|
|
442
|
+
# we can pass them to the client.
|
|
443
|
+
def check(obj)
|
|
440
444
|
# Retrieval is enough here, because we don't want to cache
|
|
441
445
|
# any information in the state file, and we don't want to generate
|
|
442
446
|
# any state changes or anything. We don't even need to sync
|
|
443
447
|
# the checksum, because we're always going to hit the disk
|
|
444
448
|
# directly.
|
|
445
|
-
obj.retrieve
|
|
446
449
|
|
|
447
|
-
|
|
450
|
+
# We're now caching file data, using the LoadedFile to check the
|
|
451
|
+
# disk no more frequently than the :filetimeout.
|
|
452
|
+
path = obj[:path]
|
|
453
|
+
sync = sync(path)
|
|
454
|
+
unless data = @@files[path]
|
|
455
|
+
data = {}
|
|
456
|
+
sync.synchronize(Sync::EX) do
|
|
457
|
+
@@files[path] = data
|
|
458
|
+
data[:loaded_obj] = Puppet::Util::LoadedFile.new(path)
|
|
459
|
+
Puppet.notice "Initializing values for %s" % path
|
|
460
|
+
data[:values] = properties(obj)
|
|
461
|
+
return data[:values]
|
|
462
|
+
end
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
changed = nil
|
|
466
|
+
sync.synchronize(Sync::SH) do
|
|
467
|
+
changed = data[:loaded_obj].changed?
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
if changed
|
|
471
|
+
sync.synchronize(Sync::EX) do
|
|
472
|
+
Puppet.notice "Getting values for %s" % path
|
|
473
|
+
data[:values] = properties(obj)
|
|
474
|
+
return data[:values]
|
|
475
|
+
end
|
|
476
|
+
else
|
|
477
|
+
sync.synchronize(Sync::SH) do
|
|
478
|
+
Puppet.info "Using cached values for %s" % path
|
|
479
|
+
return data[:values]
|
|
480
|
+
end
|
|
481
|
+
end
|
|
448
482
|
end
|
|
449
483
|
|
|
450
484
|
# Create a map for a specific client.
|
|
@@ -576,6 +610,11 @@ class Puppet::Network::Handler
|
|
|
576
610
|
@path = path
|
|
577
611
|
end
|
|
578
612
|
|
|
613
|
+
# Return the current values for the object.
|
|
614
|
+
def properties(obj)
|
|
615
|
+
obj.retrieve.inject({}) { |props, ary| props[ary[0].name] = ary[1]; props }
|
|
616
|
+
end
|
|
617
|
+
|
|
579
618
|
# Retrieve a specific directory relative to a mount point.
|
|
580
619
|
# If they pass in a client, then expand as necessary.
|
|
581
620
|
def subdir(dir = nil, client = nil)
|
|
@@ -590,6 +629,11 @@ class Puppet::Network::Handler
|
|
|
590
629
|
dirname
|
|
591
630
|
end
|
|
592
631
|
|
|
632
|
+
def sync(path)
|
|
633
|
+
@@syncs[path] ||= Sync.new
|
|
634
|
+
@@syncs[path]
|
|
635
|
+
end
|
|
636
|
+
|
|
593
637
|
def to_s
|
|
594
638
|
"mount[#{@name}]"
|
|
595
639
|
end
|
|
@@ -616,4 +660,4 @@ class Puppet::Network::Handler
|
|
|
616
660
|
end
|
|
617
661
|
end
|
|
618
662
|
|
|
619
|
-
# $Id: fileserver.rb
|
|
663
|
+
# $Id: fileserver.rb 2629 2007-06-19 22:18:55Z luke $
|
|
@@ -8,6 +8,9 @@ require 'yaml'
|
|
|
8
8
|
class Puppet::Network::Handler
|
|
9
9
|
class MasterError < Puppet::Error; end
|
|
10
10
|
class Master < Handler
|
|
11
|
+
desc "Puppet's configuration interface. Used for all interactions related to
|
|
12
|
+
generating client configurations."
|
|
13
|
+
|
|
11
14
|
include Puppet::Util
|
|
12
15
|
|
|
13
16
|
attr_accessor :ast, :local
|
|
@@ -68,7 +71,7 @@ class Puppet::Network::Handler
|
|
|
68
71
|
|
|
69
72
|
host = Puppet::Rails::Host.find_or_create_by_name(client)
|
|
70
73
|
host.last_freshcheck = Time.now
|
|
71
|
-
if clientip and (! host.ip or host.ip == "")
|
|
74
|
+
if clientip and (! host.ip or host.ip == "" or host.ip == "NULL")
|
|
72
75
|
host.ip = clientip
|
|
73
76
|
end
|
|
74
77
|
host.save
|
|
@@ -200,7 +203,7 @@ class Puppet::Network::Handler
|
|
|
200
203
|
when "marshal":
|
|
201
204
|
str = Marshal::dump(retobjects)
|
|
202
205
|
when "yaml":
|
|
203
|
-
str =
|
|
206
|
+
str = retobjects.to_yaml(:UseBlock => true)
|
|
204
207
|
else
|
|
205
208
|
raise XMLRPC::FaultException.new(
|
|
206
209
|
1, "Unavailable config format %s" % format
|
|
@@ -220,4 +223,4 @@ class Puppet::Network::Handler
|
|
|
220
223
|
end
|
|
221
224
|
end
|
|
222
225
|
|
|
223
|
-
# $Id: master.rb
|
|
226
|
+
# $Id: master.rb 2616 2007-06-18 21:03:18Z luke $
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
require 'puppet/util/instance_loader'
|
|
2
|
+
|
|
1
3
|
# A simple server for triggering a new run on a Puppet client.
|
|
2
4
|
class Puppet::Network::Handler
|
|
3
5
|
class Report < Handler
|
|
6
|
+
desc "Accepts a Puppet transaction report and processes it."
|
|
7
|
+
|
|
4
8
|
extend Puppet::Util::ClassGen
|
|
9
|
+
extend Puppet::Util::InstanceLoader
|
|
5
10
|
|
|
6
11
|
module ReportBase
|
|
7
12
|
include Puppet::Util::Docs
|
|
@@ -20,8 +25,8 @@ class Puppet::Network::Handler
|
|
|
20
25
|
iface.add_method("string report(array)")
|
|
21
26
|
}
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
# Set up autoloading and retrieving of reports.
|
|
29
|
+
autoload :report, 'puppet/reports'
|
|
25
30
|
|
|
26
31
|
class << self
|
|
27
32
|
attr_reader :hooks
|
|
@@ -31,7 +36,7 @@ class Puppet::Network::Handler
|
|
|
31
36
|
def self.newreport(name, options = {}, &block)
|
|
32
37
|
name = symbolize(name)
|
|
33
38
|
|
|
34
|
-
mod = genmodule(name, :extend => ReportBase, :hash =>
|
|
39
|
+
mod = genmodule(name, :extend => ReportBase, :hash => instance_hash(:report), :block => block)
|
|
35
40
|
|
|
36
41
|
if options[:useyaml]
|
|
37
42
|
mod.useyaml = true
|
|
@@ -42,31 +47,12 @@ class Puppet::Network::Handler
|
|
|
42
47
|
end
|
|
43
48
|
end
|
|
44
49
|
|
|
45
|
-
# Load a report.
|
|
46
|
-
def self.report(name)
|
|
47
|
-
name = name.intern if name.is_a? String
|
|
48
|
-
unless @reports.include? name
|
|
49
|
-
if @reportloader.load(name)
|
|
50
|
-
unless @reports.include? name
|
|
51
|
-
Puppet.warning(
|
|
52
|
-
"Loaded report file for %s but report was not defined" %
|
|
53
|
-
name
|
|
54
|
-
)
|
|
55
|
-
return nil
|
|
56
|
-
end
|
|
57
|
-
else
|
|
58
|
-
return nil
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
@reports[symbolize(name)]
|
|
62
|
-
end
|
|
63
|
-
|
|
64
50
|
# Collect the docs for all of our reports.
|
|
65
51
|
def self.reportdocs
|
|
66
52
|
docs = ""
|
|
67
53
|
|
|
68
54
|
# Use this method so they all get loaded
|
|
69
|
-
|
|
55
|
+
loaded_instances(:report).sort { |a,b| a.to_s <=> b.to_s }.each do |name|
|
|
70
56
|
mod = self.report(name)
|
|
71
57
|
docs += "%s\n%s\n" % [name, "-" * name.to_s.length]
|
|
72
58
|
|
|
@@ -78,8 +64,8 @@ class Puppet::Network::Handler
|
|
|
78
64
|
|
|
79
65
|
# List each of the reports.
|
|
80
66
|
def self.reports
|
|
81
|
-
|
|
82
|
-
|
|
67
|
+
instance_loader(:report).loadall
|
|
68
|
+
loaded_instances(:report)
|
|
83
69
|
end
|
|
84
70
|
|
|
85
71
|
def initialize(*args)
|
|
@@ -155,4 +141,4 @@ class Puppet::Network::Handler
|
|
|
155
141
|
end
|
|
156
142
|
end
|
|
157
143
|
|
|
158
|
-
# $Id: report.rb
|
|
144
|
+
# $Id: report.rb 2517 2007-05-15 19:22:36Z luke $
|
|
@@ -4,6 +4,16 @@ require 'puppet/network/handler'
|
|
|
4
4
|
# Serve Puppet elements. Useful for querying, copying, and, um, other stuff.
|
|
5
5
|
class Puppet::Network::Handler
|
|
6
6
|
class Resource < Handler
|
|
7
|
+
desc "An interface for interacting with client-based resources that can
|
|
8
|
+
be used for querying or managing remote machines without using Puppet's
|
|
9
|
+
central server tools.
|
|
10
|
+
|
|
11
|
+
The ``describe`` and ``list`` methods return TransBuckets containing
|
|
12
|
+
TransObject instances (``describe`` returns a single TransBucket),
|
|
13
|
+
and the ``apply`` method accepts a TransBucket of TransObjects and
|
|
14
|
+
applies them locally.
|
|
15
|
+
"
|
|
16
|
+
|
|
7
17
|
attr_accessor :local
|
|
8
18
|
|
|
9
19
|
@interface = XMLRPC::Service::Interface.new("resource") { |iface|
|
|
@@ -12,6 +22,8 @@ class Puppet::Network::Handler
|
|
|
12
22
|
iface.add_method("string list(string, array, string)")
|
|
13
23
|
}
|
|
14
24
|
|
|
25
|
+
side :client
|
|
26
|
+
|
|
15
27
|
# Apply a TransBucket as a transaction.
|
|
16
28
|
def apply(bucket, format = "yaml", client = nil, clientip = nil)
|
|
17
29
|
unless @local
|
|
@@ -133,7 +145,7 @@ class Puppet::Network::Handler
|
|
|
133
145
|
bucket = Puppet::TransBucket.new
|
|
134
146
|
bucket.type = typeklass.name
|
|
135
147
|
|
|
136
|
-
typeklass.
|
|
148
|
+
typeklass.instances.each do |obj|
|
|
137
149
|
next if ignore.include? obj.name
|
|
138
150
|
|
|
139
151
|
#object = Puppet::TransObject.new(obj.name, typeklass.name)
|
|
@@ -187,4 +199,4 @@ class Puppet::Network::Handler
|
|
|
187
199
|
end
|
|
188
200
|
end
|
|
189
201
|
|
|
190
|
-
# $Id: resource.rb
|
|
202
|
+
# $Id: resource.rb 2551 2007-06-04 20:37:14Z luke $
|
|
@@ -2,10 +2,14 @@ class Puppet::Network::Handler
|
|
|
2
2
|
class MissingMasterError < RuntimeError; end # Cannot find the master client
|
|
3
3
|
# A simple server for triggering a new run on a Puppet client.
|
|
4
4
|
class Runner < Handler
|
|
5
|
+
desc "An interface for triggering client configuration runs."
|
|
6
|
+
|
|
5
7
|
@interface = XMLRPC::Service::Interface.new("puppetrunner") { |iface|
|
|
6
8
|
iface.add_method("string run(string, string)")
|
|
7
9
|
}
|
|
8
10
|
|
|
11
|
+
side :client
|
|
12
|
+
|
|
9
13
|
# Run the client configuration right now, optionally specifying
|
|
10
14
|
# tags and whether to ignore schedules
|
|
11
15
|
def run(tags = nil, ignoreschedules = false, fg = true, client = nil, clientip = nil)
|
|
@@ -58,4 +62,4 @@ class Puppet::Network::Handler
|
|
|
58
62
|
end
|
|
59
63
|
end
|
|
60
64
|
|
|
61
|
-
# $Id: runner.rb
|
|
65
|
+
# $Id: runner.rb 2479 2007-05-07 22:29:44Z luke $
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
class Puppet::Network::Handler
|
|
2
2
|
class Status < Handler
|
|
3
|
+
desc "A simple interface for testing Puppet connectivity."
|
|
4
|
+
|
|
5
|
+
side :client
|
|
6
|
+
|
|
3
7
|
@interface = XMLRPC::Service::Interface.new("status") { |iface|
|
|
4
8
|
iface.add_method("int status()")
|
|
5
9
|
}
|
|
@@ -10,4 +14,4 @@ class Puppet::Network::Handler
|
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
|
|
13
|
-
# $Id: status.rb
|
|
17
|
+
# $Id: status.rb 2479 2007-05-07 22:29:44Z luke $
|
|
@@ -47,8 +47,8 @@ require 'resolv'
|
|
|
47
47
|
# handler = XmlRpcHandler.new
|
|
48
48
|
# handler.xmlrpc_server.add_handler("my.add") { |a, b| a.to_i + b.to_i }
|
|
49
49
|
# </pre>
|
|
50
|
-
|
|
51
|
-
class
|
|
50
|
+
module Puppet::Network
|
|
51
|
+
class Server::Mongrel < ::Mongrel::HttpHandler
|
|
52
52
|
attr_reader :xmlrpc_server
|
|
53
53
|
|
|
54
54
|
def initialize(handlers)
|
|
@@ -114,7 +114,7 @@ class Puppet::Network::Server
|
|
|
114
114
|
def client_info(request)
|
|
115
115
|
params = request.params
|
|
116
116
|
ip = params["REMOTE_ADDR"]
|
|
117
|
-
if dn = params[
|
|
117
|
+
if dn = params[Puppet[:ssl_client_header]]
|
|
118
118
|
client = dn.sub("/CN=", '')
|
|
119
119
|
valid = true
|
|
120
120
|
else
|
|
@@ -135,4 +135,4 @@ class Puppet::Network::Server
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
# $Id: mongrel.rb
|
|
138
|
+
# $Id: mongrel.rb 2558 2007-06-11 18:07:34Z luke $
|
|
@@ -2,6 +2,7 @@ require 'puppet'
|
|
|
2
2
|
require 'puppet/daemon'
|
|
3
3
|
require 'webrick'
|
|
4
4
|
require 'webrick/https'
|
|
5
|
+
require 'fcntl'
|
|
5
6
|
|
|
6
7
|
require 'puppet/sslcertificates/support'
|
|
7
8
|
require 'puppet/network/xmlrpc/webrick_servlet'
|
|
@@ -47,14 +48,19 @@ module Puppet
|
|
|
47
48
|
|
|
48
49
|
# yuck; separate http logs
|
|
49
50
|
file = nil
|
|
50
|
-
Puppet.config.use(:
|
|
51
|
+
Puppet.config.use(:main, :ssl, Puppet[:name])
|
|
51
52
|
if Puppet[:name] == "puppetmasterd"
|
|
52
53
|
file = Puppet[:masterhttplog]
|
|
53
54
|
else
|
|
54
55
|
file = Puppet[:httplog]
|
|
55
56
|
end
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
# open the log manually to prevent file descriptor leak
|
|
59
|
+
file_io = open(file, "a+")
|
|
60
|
+
file_io.sync
|
|
61
|
+
file_io.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
|
62
|
+
|
|
63
|
+
args << file_io
|
|
58
64
|
if Puppet[:debug]
|
|
59
65
|
args << WEBrick::Log::DEBUG
|
|
60
66
|
end
|
|
@@ -87,6 +93,11 @@ module Puppet
|
|
|
87
93
|
|
|
88
94
|
super(hash)
|
|
89
95
|
|
|
96
|
+
# make sure children don't inherit the sockets
|
|
97
|
+
listeners.each { |sock|
|
|
98
|
+
sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
|
99
|
+
}
|
|
100
|
+
|
|
90
101
|
Puppet.info "Listening on port %s" % hash[:Port]
|
|
91
102
|
|
|
92
103
|
# this creates a new servlet for every connection,
|
|
@@ -150,4 +161,4 @@ module Puppet
|
|
|
150
161
|
end
|
|
151
162
|
end
|
|
152
163
|
|
|
153
|
-
# $Id: webrick.rb
|
|
164
|
+
# $Id: webrick.rb 2553 2007-06-05 18:12:42Z luke $
|
data/lib/puppet/parameter.rb
CHANGED
|
@@ -240,6 +240,8 @@ class Puppet::Parameter < Puppet::Element
|
|
|
240
240
|
# ParamHandler class.
|
|
241
241
|
proxymethods("required?", "isnamevar?")
|
|
242
242
|
|
|
243
|
+
attr_accessor :resource
|
|
244
|
+
# LAK 2007-05-09: Keep the @parent around for backward compatibility.
|
|
243
245
|
attr_accessor :parent
|
|
244
246
|
attr_reader :shadow
|
|
245
247
|
|
|
@@ -257,12 +259,12 @@ class Puppet::Parameter < Puppet::Element
|
|
|
257
259
|
|
|
258
260
|
error = type.new(args.join(" "))
|
|
259
261
|
|
|
260
|
-
if defined? @
|
|
261
|
-
error.line = @
|
|
262
|
+
if defined? @resource and @resource and @resource.line
|
|
263
|
+
error.line = @resource.line
|
|
262
264
|
end
|
|
263
265
|
|
|
264
|
-
if defined? @
|
|
265
|
-
error.file = @
|
|
266
|
+
if defined? @resource and @resource and @resource.file
|
|
267
|
+
error.file = @resource.file
|
|
266
268
|
end
|
|
267
269
|
|
|
268
270
|
raise error
|
|
@@ -271,13 +273,16 @@ class Puppet::Parameter < Puppet::Element
|
|
|
271
273
|
# Basic parameter initialization.
|
|
272
274
|
def initialize(options = {})
|
|
273
275
|
options = symbolize_options(options)
|
|
274
|
-
if
|
|
275
|
-
self.
|
|
276
|
-
options.delete(:
|
|
276
|
+
if resource = options[:resource]
|
|
277
|
+
self.resource = resource
|
|
278
|
+
options.delete(:resource)
|
|
277
279
|
else
|
|
278
|
-
raise Puppet::DevError, "No
|
|
280
|
+
raise Puppet::DevError, "No resource set for %s" % self.class.name
|
|
279
281
|
end
|
|
280
282
|
|
|
283
|
+
# LAK 2007-05-09: Keep the @parent around for backward compatibility.
|
|
284
|
+
#@parent = @resource
|
|
285
|
+
|
|
281
286
|
if ! self.metaparam? and klass = Puppet::Type.metaparamclass(self.class.name)
|
|
282
287
|
setup_shadow(klass)
|
|
283
288
|
end
|
|
@@ -285,15 +290,15 @@ class Puppet::Parameter < Puppet::Element
|
|
|
285
290
|
set_options(options)
|
|
286
291
|
end
|
|
287
292
|
|
|
288
|
-
# Log a message using the
|
|
293
|
+
# Log a message using the resource's log level.
|
|
289
294
|
def log(msg)
|
|
290
|
-
unless @
|
|
291
|
-
p @
|
|
295
|
+
unless @resource[:loglevel]
|
|
296
|
+
p @resource
|
|
292
297
|
self.devfail "Parent %s has no loglevel" %
|
|
293
|
-
@
|
|
298
|
+
@resource.name
|
|
294
299
|
end
|
|
295
300
|
Puppet::Util::Log.create(
|
|
296
|
-
:level => @
|
|
301
|
+
:level => @resource[:loglevel],
|
|
297
302
|
:message => msg,
|
|
298
303
|
:source => self
|
|
299
304
|
)
|
|
@@ -317,7 +322,7 @@ class Puppet::Parameter < Puppet::Element
|
|
|
317
322
|
unless defined? @noop
|
|
318
323
|
@noop = false
|
|
319
324
|
end
|
|
320
|
-
tmp = @noop || self.
|
|
325
|
+
tmp = @noop || self.resource.noop || Puppet[:noop] || false
|
|
321
326
|
#debug "noop is %s" % tmp
|
|
322
327
|
return tmp
|
|
323
328
|
end
|
|
@@ -325,8 +330,8 @@ class Puppet::Parameter < Puppet::Element
|
|
|
325
330
|
# return the full path to us, for logging and rollback; not currently
|
|
326
331
|
# used
|
|
327
332
|
def pathbuilder
|
|
328
|
-
if defined? @
|
|
329
|
-
return [@
|
|
333
|
+
if defined? @resource and @resource
|
|
334
|
+
return [@resource.pathbuilder, self.name]
|
|
330
335
|
else
|
|
331
336
|
return [self.name]
|
|
332
337
|
end
|
|
@@ -397,7 +402,7 @@ class Puppet::Parameter < Puppet::Element
|
|
|
397
402
|
end
|
|
398
403
|
|
|
399
404
|
def remove
|
|
400
|
-
@
|
|
405
|
+
@resource = nil
|
|
401
406
|
@shadow = nil
|
|
402
407
|
end
|
|
403
408
|
|
|
@@ -414,7 +419,7 @@ class Puppet::Parameter < Puppet::Element
|
|
|
414
419
|
if self.should
|
|
415
420
|
return self.should
|
|
416
421
|
else
|
|
417
|
-
return self.
|
|
422
|
+
return self.retrieve
|
|
418
423
|
end
|
|
419
424
|
else
|
|
420
425
|
if defined? @value
|
|
@@ -446,17 +451,17 @@ class Puppet::Parameter < Puppet::Element
|
|
|
446
451
|
|
|
447
452
|
def inspect
|
|
448
453
|
s = "Parameter(%s = %s" % [self.name, self.value || "nil"]
|
|
449
|
-
if defined? @
|
|
450
|
-
s += ", @
|
|
454
|
+
if defined? @resource
|
|
455
|
+
s += ", @resource = %s)" % @resource
|
|
451
456
|
else
|
|
452
457
|
s += ")"
|
|
453
458
|
end
|
|
454
459
|
end
|
|
455
460
|
|
|
456
|
-
# Retrieve the
|
|
457
|
-
# case we return the
|
|
461
|
+
# Retrieve the resource's provider. Some types don't have providers, in which
|
|
462
|
+
# case we return the resource object itself.
|
|
458
463
|
def provider
|
|
459
|
-
@
|
|
464
|
+
@resource.provider || @resource
|
|
460
465
|
end
|
|
461
466
|
|
|
462
467
|
# If there's a shadowing metaparam, instantiate it now.
|
|
@@ -464,7 +469,7 @@ class Puppet::Parameter < Puppet::Element
|
|
|
464
469
|
# same name as a metaparameter, and the metaparam will only be
|
|
465
470
|
# stored as a shadow.
|
|
466
471
|
def setup_shadow(klass)
|
|
467
|
-
@shadow = klass.new(:
|
|
472
|
+
@shadow = klass.new(:resource => self.resource)
|
|
468
473
|
end
|
|
469
474
|
|
|
470
475
|
def to_s
|
|
@@ -472,4 +477,4 @@ class Puppet::Parameter < Puppet::Element
|
|
|
472
477
|
end
|
|
473
478
|
end
|
|
474
479
|
|
|
475
|
-
# $Id: parameter.rb
|
|
480
|
+
# $Id: parameter.rb 2503 2007-05-10 21:46:59Z luke $
|