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/TODO
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
require 'yaml'
|
|
2
|
-
|
|
3
|
-
class Puppet::Network::Handler
|
|
4
|
-
class LoggerError < RuntimeError; end
|
|
5
|
-
|
|
6
|
-
# Receive logs from remote hosts.
|
|
7
|
-
class Logger < Handler
|
|
8
|
-
@interface = XMLRPC::Service::Interface.new("puppetlogger") { |iface|
|
|
9
|
-
iface.add_method("void addlog(string)")
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
# accept a log message from a client, and route it accordingly
|
|
13
|
-
def addlog(message, client = nil, clientip = nil)
|
|
14
|
-
unless message
|
|
15
|
-
raise Puppet::DevError, "Did not receive message"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
Puppet.info message.inspect
|
|
19
|
-
# if the client is set, then we're not local
|
|
20
|
-
if client
|
|
21
|
-
begin
|
|
22
|
-
message = YAML.load(CGI.unescape(message))
|
|
23
|
-
#message = message
|
|
24
|
-
rescue => detail
|
|
25
|
-
raise XMLRPC::FaultException.new(
|
|
26
|
-
1, "Could not unYAML log message from %s" % client
|
|
27
|
-
)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
unless message
|
|
32
|
-
raise Puppet::DevError, "Could not resurrect message"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Mark it as remote, so it's not sent to syslog
|
|
36
|
-
message.remote = true
|
|
37
|
-
|
|
38
|
-
if client
|
|
39
|
-
if ! message.source or message.source == "Puppet"
|
|
40
|
-
message.source = client
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
Puppet::Util::Log.newmessage(message)
|
|
45
|
-
|
|
46
|
-
# This is necessary or XMLRPC gets all pukey
|
|
47
|
-
return ""
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# $Id: logger.rb 2259 2007-03-06 19:03:05Z luke $
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
class AddIndexes < ActiveRecord::Migration
|
|
2
|
-
INDEXES = {
|
|
3
|
-
:resources => [[:title, :restype], :host_id, :exported],
|
|
4
|
-
:source_files => [:filename, :path],
|
|
5
|
-
:puppet_classes => [:name, :host_id],
|
|
6
|
-
:hosts => [:name, :ip, :updated_at],
|
|
7
|
-
:fact_names => [:name, :host_id],
|
|
8
|
-
:fact_values => [:fact_name_id],
|
|
9
|
-
:param_values => [:param_name_id],
|
|
10
|
-
:param_names => [:name, :resource_id],
|
|
11
|
-
:tags => [:name, :updated_at],
|
|
12
|
-
:taggings => [:tag_id, :taggable_id, :taggable_type]
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
def self.up
|
|
16
|
-
puts "trying"
|
|
17
|
-
# Add all of our initial indexes
|
|
18
|
-
INDEXES.each do |table, indexes|
|
|
19
|
-
indexes.each do |index|
|
|
20
|
-
if index.to_s =~ /_id/
|
|
21
|
-
add_index table, index, :integer => true
|
|
22
|
-
else
|
|
23
|
-
add_index table, index
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.down
|
|
30
|
-
INDEXES.each do |table, indexes|
|
|
31
|
-
indexes.each do |index|
|
|
32
|
-
remove_index table, index
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# $Id: 001_add_indexes.rb 2344 2007-03-22 04:56:05Z luke $
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
require 'etc'
|
|
2
|
-
require 'facter'
|
|
3
|
-
require 'puppet/util/filetype'
|
|
4
|
-
require 'puppet/type/property'
|
|
5
|
-
|
|
6
|
-
module Puppet
|
|
7
|
-
# The base parameter for all of these types. Its only job is to copy
|
|
8
|
-
# the 'should' value to the 'is' value and to do support the right logging
|
|
9
|
-
# and such.
|
|
10
|
-
class Property::ParsedParam < Puppet::Property
|
|
11
|
-
# This is the info retrieved from disk.
|
|
12
|
-
attr_accessor :found
|
|
13
|
-
|
|
14
|
-
def self.isoptional
|
|
15
|
-
@isoptional = true
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def self.isoptional?
|
|
19
|
-
if defined? @isoptional
|
|
20
|
-
return @isoptional
|
|
21
|
-
else
|
|
22
|
-
return false
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# By default, support ':absent' as a value for optional
|
|
27
|
-
# parameters. Any parameters that define their own validation
|
|
28
|
-
# need to do this manuallly.
|
|
29
|
-
validate do |value|
|
|
30
|
-
if self.class.isoptional? and (
|
|
31
|
-
value == "absent" or value == :absent
|
|
32
|
-
)
|
|
33
|
-
return :absent
|
|
34
|
-
else
|
|
35
|
-
return value
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def clear
|
|
40
|
-
super
|
|
41
|
-
@found = nil
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Fix things so that the fields have to match exactly, instead
|
|
45
|
-
# of only kinda
|
|
46
|
-
def insync?
|
|
47
|
-
self.is == self.should
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Normally this would retrieve the current value, but our property is not
|
|
51
|
-
# actually capable of doing so. So, we retrieve the whole object and
|
|
52
|
-
# just collect our current state. Note that this method is not called
|
|
53
|
-
# during a transaction, since transactions call the parent object method.
|
|
54
|
-
def retrieve
|
|
55
|
-
@parent.retrieve
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# All this does is return an event; all of the work gets done
|
|
59
|
-
# in the flush method on the model.
|
|
60
|
-
def sync
|
|
61
|
-
if e = self.class.event(self.should)
|
|
62
|
-
return e
|
|
63
|
-
else
|
|
64
|
-
if self.class.name == :ensure
|
|
65
|
-
if self.should == :absent
|
|
66
|
-
return (@parent.class.name.to_s + "_removed").intern
|
|
67
|
-
else
|
|
68
|
-
return (@parent.class.name.to_s + "_created").intern
|
|
69
|
-
end
|
|
70
|
-
else
|
|
71
|
-
return (@parent.class.name.to_s + "_changed").intern
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# The collection of classes that are just simple records aggregated
|
|
78
|
-
# into a file. See 'host.rb' for an example.
|
|
79
|
-
class Type::ParsedType < Puppet::Type
|
|
80
|
-
@name = :parsedtype
|
|
81
|
-
|
|
82
|
-
# Convert the hash to an object.
|
|
83
|
-
def self.hash2obj(hash)
|
|
84
|
-
obj = nil
|
|
85
|
-
|
|
86
|
-
namevar = self.namevar
|
|
87
|
-
unless hash.include?(namevar) and hash[namevar]
|
|
88
|
-
raise Puppet::DevError, "Hash was not passed with namevar"
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# if the obj already exists with that name...
|
|
92
|
-
if obj = self[hash[namevar]]
|
|
93
|
-
# We're assuming here that objects with the same name
|
|
94
|
-
# are the same object, which *should* be the case, assuming
|
|
95
|
-
# we've set up our naming stuff correctly everywhere.
|
|
96
|
-
|
|
97
|
-
# Mark found objects as present
|
|
98
|
-
obj.is = [:ensure, :present]
|
|
99
|
-
obj.property(:ensure).found = :present
|
|
100
|
-
hash.each { |param, value|
|
|
101
|
-
if property = obj.property(param)
|
|
102
|
-
property.is = value
|
|
103
|
-
elsif val = obj[param]
|
|
104
|
-
obj[param] = val
|
|
105
|
-
else
|
|
106
|
-
# There is a value on disk, but it should go away
|
|
107
|
-
obj.is = [param, value]
|
|
108
|
-
obj[param] = :absent
|
|
109
|
-
end
|
|
110
|
-
}
|
|
111
|
-
else
|
|
112
|
-
# create a new obj, since no existing one seems to
|
|
113
|
-
# match
|
|
114
|
-
obj = self.create(namevar => hash[namevar])
|
|
115
|
-
|
|
116
|
-
# We can't just pass the hash in at object creation time,
|
|
117
|
-
# because it sets the should value, not the is value.
|
|
118
|
-
hash.delete(namevar)
|
|
119
|
-
hash.each { |param, value|
|
|
120
|
-
obj.is = [param, value]
|
|
121
|
-
}
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
return obj
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# Override 'newproperty' so that all properties default to having the
|
|
128
|
-
# correct parent type
|
|
129
|
-
def self.newproperty(name, options = {}, &block)
|
|
130
|
-
options[:parent] ||= Puppet::Property::ParsedParam
|
|
131
|
-
super(name, options, &block)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def self.list
|
|
135
|
-
ret = suitableprovider.collect do |provider|
|
|
136
|
-
provider.retrieve.find_all { |i| i.is_a? Hash }.collect { |i| hash2obj(i) }
|
|
137
|
-
end.flatten
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def self.listbyname
|
|
141
|
-
suitableprovider.collect do |provider|
|
|
142
|
-
provider.retrieve.find_all { |i| i.is_a? Hash }.collect { |i| i[:name] }
|
|
143
|
-
end.flatten
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Make sure they've got an explicit :ensure class.
|
|
147
|
-
def self.postinit
|
|
148
|
-
unless validproperty? :ensure
|
|
149
|
-
newproperty(:ensure) do
|
|
150
|
-
newvalue(:present) do
|
|
151
|
-
# The value will get flushed appropriately
|
|
152
|
-
return nil
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
newvalue(:absent) do
|
|
156
|
-
# The value will get flushed appropriately
|
|
157
|
-
return nil
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
defaultto do
|
|
161
|
-
if @parent.managed?
|
|
162
|
-
:present
|
|
163
|
-
else
|
|
164
|
-
nil
|
|
165
|
-
end
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def exists?
|
|
172
|
-
h = self.retrieve
|
|
173
|
-
|
|
174
|
-
if h.nil? or h[:ensure] == :absent
|
|
175
|
-
return false
|
|
176
|
-
else
|
|
177
|
-
return true
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
# Flush our content to disk.
|
|
182
|
-
def flush
|
|
183
|
-
provider.store(self.to_hash)
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
# Retrieve our current state from our provider
|
|
187
|
-
def retrieve
|
|
188
|
-
if h = provider.hash and ! h.empty?
|
|
189
|
-
h[:ensure] ||= :present
|
|
190
|
-
|
|
191
|
-
# If they passed back info we don't have, then mark it to
|
|
192
|
-
# be deleted.
|
|
193
|
-
h.each do |name, value|
|
|
194
|
-
next unless self.class.validproperty?(name)
|
|
195
|
-
unless @parameters[name]
|
|
196
|
-
self.newproperty(name, :should => :absent)
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
properties().each do |property|
|
|
201
|
-
if h.has_key? property.name
|
|
202
|
-
property.is = h[property.name]
|
|
203
|
-
else
|
|
204
|
-
property.is = :absent
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
return h
|
|
209
|
-
else
|
|
210
|
-
properties().each do |property|
|
|
211
|
-
property.is = :absent
|
|
212
|
-
end
|
|
213
|
-
return nil
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
end
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# $Id: parsedtype.rb 2178 2007-02-07 23:56:59Z luke $
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
4
|
-
|
|
5
|
-
require 'puppettest'
|
|
6
|
-
require 'puppet/network/handler/logger'
|
|
7
|
-
require 'base64'
|
|
8
|
-
require 'cgi'
|
|
9
|
-
|
|
10
|
-
class TestLogger < Test::Unit::TestCase
|
|
11
|
-
include PuppetTest::ServerTest
|
|
12
|
-
|
|
13
|
-
def setup
|
|
14
|
-
super
|
|
15
|
-
|
|
16
|
-
# Send the logs to an array, yo.
|
|
17
|
-
Puppet::Util::Log.close
|
|
18
|
-
@logs = []
|
|
19
|
-
Puppet::Util::Log.newdestination @logs
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Test the log driver manually
|
|
23
|
-
def test_localaddlog
|
|
24
|
-
logger = nil
|
|
25
|
-
assert_nothing_raised {
|
|
26
|
-
logger = Puppet::Network::Handler.logger.new
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
msg = nil
|
|
30
|
-
assert_nothing_raised {
|
|
31
|
-
msg = Puppet::Util::Log.create(
|
|
32
|
-
:level => :warning,
|
|
33
|
-
:message => "This is a message"
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
assert_nothing_raised {
|
|
38
|
-
logger.addlog(msg)
|
|
39
|
-
}
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Test it while replicating a remote client
|
|
43
|
-
def test_remoteaddlog
|
|
44
|
-
logger = nil
|
|
45
|
-
assert_nothing_raised {
|
|
46
|
-
logger = Puppet::Network::Handler.logger.new
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
msg = nil
|
|
50
|
-
assert_nothing_raised {
|
|
51
|
-
msg = Puppet::Util::Log.create(
|
|
52
|
-
:level => :warning,
|
|
53
|
-
:message => "This is a remote message"
|
|
54
|
-
)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
assert_nothing_raised {
|
|
58
|
-
msg = CGI.escape(YAML.dump(msg))
|
|
59
|
-
}
|
|
60
|
-
assert_nothing_raised {
|
|
61
|
-
logger.addlog(msg, "localhost", "127.0.0.1")
|
|
62
|
-
}
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Now test it with a real client and server, but not remote
|
|
66
|
-
def test_localclient
|
|
67
|
-
client = nil
|
|
68
|
-
assert_nothing_raised {
|
|
69
|
-
client = Puppet::Network::Client.logger.new(:Logger => true)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
msg = nil
|
|
73
|
-
assert_nothing_raised {
|
|
74
|
-
msg = Puppet::Util::Log.create(
|
|
75
|
-
:level => :warning,
|
|
76
|
-
:message => "This is a logclient message"
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
msg = CGI.escape(YAML.dump(msg))
|
|
81
|
-
|
|
82
|
-
assert_nothing_raised {
|
|
83
|
-
client.addlog(msg, "localhost", "127.0.0.1")
|
|
84
|
-
}
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# And now test over the network
|
|
88
|
-
# This test is disabled, since it doesn't work well and it's not the right
|
|
89
|
-
# solution anyway.
|
|
90
|
-
def disabled_test_logclient
|
|
91
|
-
pid = nil
|
|
92
|
-
clientlog = tempfile()
|
|
93
|
-
serverlog = tempfile()
|
|
94
|
-
Puppet.warning "serverlog is %s" % serverlog
|
|
95
|
-
Puppet::Util::Log.newdestination clientlog
|
|
96
|
-
Puppet::Util::Log.close(:syslog)
|
|
97
|
-
|
|
98
|
-
# For testing
|
|
99
|
-
Puppet[:autosign] = true
|
|
100
|
-
|
|
101
|
-
logger = nil
|
|
102
|
-
# Create our server
|
|
103
|
-
assert_nothing_raised {
|
|
104
|
-
logger = Puppet::Network::Server.new(
|
|
105
|
-
:Port => @@port,
|
|
106
|
-
:Handlers => {
|
|
107
|
-
:CA => {}, # so that certs autogenerate
|
|
108
|
-
:Logger => {}
|
|
109
|
-
}
|
|
110
|
-
)
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
# Start our server
|
|
114
|
-
serverpid = fork {
|
|
115
|
-
Puppet::Util::Log.close(clientlog)
|
|
116
|
-
Puppet::Util::Log.newdestination serverlog
|
|
117
|
-
assert_nothing_raised() {
|
|
118
|
-
trap(:INT) { logger.shutdown }
|
|
119
|
-
logger.start
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
@@tmppids << serverpid
|
|
123
|
-
sleep(0.5)
|
|
124
|
-
|
|
125
|
-
# Start a raw xmlrpc client
|
|
126
|
-
client = nil
|
|
127
|
-
assert_nothing_raised() {
|
|
128
|
-
client = Puppet::Network::Client.logger.new(
|
|
129
|
-
:Server => "localhost",
|
|
130
|
-
:Port => @@port
|
|
131
|
-
)
|
|
132
|
-
unless client.readcert
|
|
133
|
-
raise "Could not get certs"
|
|
134
|
-
end
|
|
135
|
-
}
|
|
136
|
-
retval = nil
|
|
137
|
-
|
|
138
|
-
{
|
|
139
|
-
:notice => "XMLRPC1",
|
|
140
|
-
:warning => "XMLRPC2",
|
|
141
|
-
:err => "XMLRPC3"
|
|
142
|
-
}.each { |level, str|
|
|
143
|
-
msg = CGI.escape(YAML.dump(Puppet::Util::Log.create(
|
|
144
|
-
:level => level,
|
|
145
|
-
:message => str
|
|
146
|
-
)))
|
|
147
|
-
assert_nothing_raised {
|
|
148
|
-
retval = client.addlog(msg)
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
# and now use the normal client action
|
|
153
|
-
|
|
154
|
-
# Set the log destination to be the server
|
|
155
|
-
Puppet::Util::Log.newdestination "localhost:%s" % @@port
|
|
156
|
-
|
|
157
|
-
# And now do some logging
|
|
158
|
-
assert_nothing_raised {
|
|
159
|
-
Puppet.notice "TEST1"
|
|
160
|
-
Puppet.warning "TEST2"
|
|
161
|
-
Puppet.err "TEST3"
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
assert_nothing_raised {
|
|
165
|
-
Process.kill("INT", serverpid)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
assert(FileTest.exists?(serverlog), "Server log does not exist")
|
|
169
|
-
|
|
170
|
-
# Give it a bit to flush to disk
|
|
171
|
-
sleep(0.5)
|
|
172
|
-
content = nil
|
|
173
|
-
assert_nothing_raised {
|
|
174
|
-
content = File.read(serverlog)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
%w{TEST1 TEST2 TEST3}.each { |str|
|
|
178
|
-
assert(content =~ %r{#{str}}, "Content does not match %s" % str)
|
|
179
|
-
}
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
# $Id: logger.rb 2259 2007-03-06 19:03:05Z luke $
|