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.
Files changed (266) hide show
  1. data/CHANGELOG +156 -0
  2. data/README +2 -2
  3. data/Rakefile +6 -6
  4. data/bin/filebucket +212 -0
  5. data/bin/puppet +2 -0
  6. data/bin/puppetca +2 -4
  7. data/bin/puppetd +16 -15
  8. data/bin/puppetdoc +46 -496
  9. data/bin/puppetmasterd +3 -5
  10. data/bin/puppetrun +8 -3
  11. data/bin/ralsh +271 -0
  12. data/conf/redhat/client.init +1 -1
  13. data/conf/redhat/puppet.spec +13 -2
  14. data/conf/solaris/pkginfo +1 -1
  15. data/ext/puppet-test +374 -0
  16. data/install.rb +40 -31
  17. data/lib/puppet.rb +39 -4
  18. data/lib/puppet/config_stores/rest.rb +60 -0
  19. data/lib/puppet/configuration.rb +312 -17
  20. data/lib/puppet/external/event-loop/event-loop.rb +4 -0
  21. data/lib/puppet/external/gratr/rdot.rb +1 -1
  22. data/lib/puppet/fact_stores/yaml.rb +42 -0
  23. data/lib/puppet/feature/base.rb +4 -1
  24. data/lib/puppet/metatype/attributes.rb +20 -43
  25. data/lib/puppet/metatype/container.rb +1 -36
  26. data/lib/puppet/metatype/evaluation.rb +48 -19
  27. data/lib/puppet/metatype/instances.rb +35 -1
  28. data/lib/puppet/metatype/metaparams.rb +23 -19
  29. data/lib/puppet/metatype/providers.rb +25 -38
  30. data/lib/puppet/network/client/ca.rb +8 -5
  31. data/lib/puppet/network/client/master.rb +59 -17
  32. data/lib/puppet/network/handler.rb +18 -1
  33. data/lib/puppet/network/handler/ca.rb +9 -3
  34. data/lib/puppet/network/handler/facts.rb +70 -0
  35. data/lib/puppet/network/handler/filebucket.rb +4 -1
  36. data/lib/puppet/network/handler/fileserver.rb +65 -21
  37. data/lib/puppet/network/handler/master.rb +6 -3
  38. data/lib/puppet/network/handler/report.rb +12 -26
  39. data/lib/puppet/network/handler/resource.rb +14 -2
  40. data/lib/puppet/network/handler/runner.rb +5 -1
  41. data/lib/puppet/network/handler/status.rb +5 -1
  42. data/lib/puppet/network/server/mongrel.rb +4 -4
  43. data/lib/puppet/network/server/webrick.rb +14 -3
  44. data/lib/puppet/parameter.rb +30 -25
  45. data/lib/puppet/parser/ast.rb +1 -6
  46. data/lib/puppet/parser/ast/component.rb +23 -20
  47. data/lib/puppet/parser/ast/hostclass.rb +7 -11
  48. data/lib/puppet/parser/ast/leaf.rb +4 -1
  49. data/lib/puppet/parser/ast/node.rb +6 -8
  50. data/lib/puppet/parser/functions.rb +7 -4
  51. data/lib/puppet/parser/interpreter.rb +155 -205
  52. data/lib/puppet/parser/lexer.rb +35 -2
  53. data/lib/puppet/parser/parser.rb +705 -612
  54. data/lib/puppet/parser/resource.rb +91 -48
  55. data/lib/puppet/parser/resource/param.rb +52 -29
  56. data/lib/puppet/parser/scope.rb +28 -23
  57. data/lib/puppet/pgraph.rb +26 -21
  58. data/lib/puppet/propertychange.rb +12 -12
  59. data/lib/puppet/provider.rb +102 -31
  60. data/lib/puppet/provider/cron/crontab.rb +7 -8
  61. data/lib/puppet/provider/group/groupadd.rb +4 -4
  62. data/lib/puppet/provider/group/pw.rb +3 -3
  63. data/lib/puppet/provider/mount.rb +8 -8
  64. data/lib/puppet/provider/mount/netinfo.rb +5 -5
  65. data/lib/puppet/provider/mount/parsed.rb +2 -2
  66. data/lib/puppet/provider/nameservice.rb +19 -31
  67. data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
  68. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  69. data/lib/puppet/provider/nameservice/pw.rb +4 -4
  70. data/lib/puppet/provider/package.rb +31 -0
  71. data/lib/puppet/provider/package/appdmg.rb +118 -0
  72. data/lib/puppet/provider/package/apple.rb +18 -16
  73. data/lib/puppet/provider/package/apt.rb +13 -15
  74. data/lib/puppet/provider/package/aptitude.rb +5 -3
  75. data/lib/puppet/provider/package/aptrpm.rb +9 -11
  76. data/lib/puppet/provider/package/blastwave.rb +9 -9
  77. data/lib/puppet/provider/package/darwinport.rb +12 -11
  78. data/lib/puppet/provider/package/dpkg.rb +20 -12
  79. data/lib/puppet/provider/package/fink.rb +87 -0
  80. data/lib/puppet/provider/package/freebsd.rb +10 -11
  81. data/lib/puppet/provider/package/gem.rb +15 -15
  82. data/lib/puppet/provider/package/openbsd.rb +12 -17
  83. data/lib/puppet/provider/package/pkgdmg.rb +90 -16
  84. data/lib/puppet/provider/package/portage.rb +20 -14
  85. data/lib/puppet/provider/package/ports.rb +15 -13
  86. data/lib/puppet/provider/package/rpm.rb +20 -23
  87. data/lib/puppet/provider/package/rug.rb +6 -8
  88. data/lib/puppet/provider/package/sun.rb +20 -18
  89. data/lib/puppet/provider/package/sunfreeware.rb +2 -2
  90. data/lib/puppet/provider/package/up2date.rb +6 -10
  91. data/lib/puppet/provider/package/urpmi.rb +51 -0
  92. data/lib/puppet/provider/package/yum.rb +15 -13
  93. data/lib/puppet/provider/parsedfile.rb +53 -63
  94. data/lib/puppet/provider/service/base.rb +13 -15
  95. data/lib/puppet/provider/service/debian.rb +4 -4
  96. data/lib/puppet/provider/service/gentoo.rb +4 -4
  97. data/lib/puppet/provider/service/init.rb +22 -15
  98. data/lib/puppet/provider/service/redhat.rb +6 -6
  99. data/lib/puppet/provider/service/smf.rb +6 -6
  100. data/lib/puppet/provider/user/netinfo.rb +5 -5
  101. data/lib/puppet/provider/user/pw.rb +10 -5
  102. data/lib/puppet/provider/user/useradd.rb +9 -14
  103. data/lib/puppet/provider/zone/solaris.rb +80 -45
  104. data/lib/puppet/rails.rb +3 -34
  105. data/lib/puppet/rails/database/schema.rb +45 -24
  106. data/lib/puppet/rails/fact_value.rb +1 -0
  107. data/lib/puppet/rails/host.rb +69 -40
  108. data/lib/puppet/rails/param_name.rb +3 -8
  109. data/lib/puppet/rails/param_value.rb +2 -1
  110. data/lib/puppet/rails/puppet_class.rb +0 -2
  111. data/lib/puppet/rails/puppet_tag.rb +5 -0
  112. data/lib/puppet/rails/resource.rb +41 -17
  113. data/lib/puppet/rails/resource_tag.rb +4 -0
  114. data/lib/puppet/reference/configuration.rb +149 -0
  115. data/lib/puppet/reference/function.rb +13 -0
  116. data/lib/puppet/reference/network.rb +37 -0
  117. data/lib/puppet/reference/providers.rb +118 -0
  118. data/lib/puppet/reference/report.rb +21 -0
  119. data/lib/puppet/reference/type.rb +152 -0
  120. data/lib/puppet/reports/rrdgraph.rb +21 -7
  121. data/lib/puppet/reports/tagmail.rb +4 -1
  122. data/lib/puppet/sslcertificates.rb +1 -49
  123. data/lib/puppet/sslcertificates/ca.rb +2 -79
  124. data/lib/puppet/sslcertificates/inventory.rb +0 -10
  125. data/lib/puppet/transaction.rb +24 -41
  126. data/lib/puppet/transaction/report.rb +27 -1
  127. data/lib/puppet/type.rb +7 -43
  128. data/lib/puppet/type/component.rb +198 -124
  129. data/lib/puppet/type/cron.rb +51 -42
  130. data/lib/puppet/type/exec.rb +20 -19
  131. data/lib/puppet/type/group.rb +6 -55
  132. data/lib/puppet/type/host.rb +16 -37
  133. data/lib/puppet/type/mount.rb +30 -17
  134. data/lib/puppet/type/notify.rb +7 -8
  135. data/lib/puppet/type/package.rb +44 -80
  136. data/lib/puppet/type/pfile.rb +50 -41
  137. data/lib/puppet/type/pfile/checksum.rb +82 -95
  138. data/lib/puppet/type/pfile/content.rb +21 -25
  139. data/lib/puppet/type/pfile/ensure.rb +32 -30
  140. data/lib/puppet/type/pfile/group.rb +21 -26
  141. data/lib/puppet/type/pfile/mode.rb +25 -32
  142. data/lib/puppet/type/pfile/owner.rb +23 -27
  143. data/lib/puppet/type/pfile/source.rb +42 -33
  144. data/lib/puppet/type/pfile/target.rb +20 -18
  145. data/lib/puppet/type/pfile/type.rb +6 -7
  146. data/lib/puppet/type/pfilebucket.rb +3 -3
  147. data/lib/puppet/type/port.rb +5 -7
  148. data/lib/puppet/type/property.rb +58 -61
  149. data/lib/puppet/type/resources.rb +12 -8
  150. data/lib/puppet/type/schedule.rb +8 -8
  151. data/lib/puppet/type/service.rb +26 -33
  152. data/lib/puppet/type/sshkey.rb +6 -7
  153. data/lib/puppet/type/tidy.rb +41 -35
  154. data/lib/puppet/type/user.rb +34 -67
  155. data/lib/puppet/type/yumrepo.rb +27 -12
  156. data/lib/puppet/type/zone.rb +71 -110
  157. data/lib/puppet/util.rb +46 -61
  158. data/lib/puppet/util/autoload.rb +59 -47
  159. data/lib/puppet/util/config.rb +160 -18
  160. data/lib/puppet/util/config_store.rb +61 -0
  161. data/lib/puppet/util/fact_store.rb +60 -0
  162. data/lib/puppet/util/instance_loader.rb +74 -0
  163. data/lib/puppet/util/loadedfile.rb +5 -8
  164. data/lib/puppet/util/metric.rb +17 -25
  165. data/lib/puppet/util/posix.rb +39 -7
  166. data/lib/puppet/util/provider_features.rb +9 -1
  167. data/lib/puppet/util/rails/collection_merger.rb +16 -1
  168. data/lib/puppet/util/reference.rb +189 -0
  169. data/lib/puppet/util/storage.rb +2 -2
  170. data/lib/puppet/util/subclass_loader.rb +9 -2
  171. data/test/language/ast.rb +4 -148
  172. data/test/language/ast/component.rb +10 -1
  173. data/test/language/collector.rb +1 -191
  174. data/test/language/interpreter.rb +284 -327
  175. data/test/language/lexer.rb +13 -1
  176. data/test/language/node.rb +1 -1
  177. data/test/language/parser.rb +17 -4
  178. data/test/language/resource.rb +67 -101
  179. data/test/language/scope.rb +18 -3
  180. data/test/language/snippets.rb +114 -151
  181. data/test/lib/puppettest.rb +13 -0
  182. data/test/lib/puppettest/exetest.rb +7 -0
  183. data/test/lib/puppettest/fakes.rb +39 -28
  184. data/test/lib/puppettest/railstesting.rb +1 -1
  185. data/test/lib/puppettest/support/assertions.rb +2 -2
  186. data/test/lib/puppettest/support/collection.rb +30 -0
  187. data/test/network/client/ca.rb +27 -1
  188. data/test/network/client/client.rb +3 -3
  189. data/test/network/client/master.rb +102 -1
  190. data/test/network/handler/ca.rb +35 -1
  191. data/test/network/handler/facts.rb +112 -0
  192. data/test/network/handler/fileserver.rb +25 -1
  193. data/test/network/handler/handler.rb +2 -2
  194. data/test/network/handler/master.rb +2 -49
  195. data/test/network/handler/resource.rb +5 -6
  196. data/test/network/server/mongrel_test.rb +65 -0
  197. data/test/network/server/webrick.rb +2 -2
  198. data/test/network/xmlrpc/client.rb +2 -1
  199. data/test/network/xmlrpc/processor.rb +2 -1
  200. data/test/other/pgraph.rb +6 -5
  201. data/test/other/propertychange.rb +11 -12
  202. data/test/other/report.rb +44 -27
  203. data/test/other/transactions.rb +17 -16
  204. data/test/puppet/tc_suidmanager.rb +2 -2
  205. data/test/rails/ast.rb +74 -0
  206. data/test/rails/collection.rb +214 -0
  207. data/test/rails/host.rb +49 -24
  208. data/test/rails/interpreter.rb +91 -0
  209. data/test/rails/railsparameter.rb +22 -11
  210. data/test/rails/railsresource.rb +140 -7
  211. data/test/ral/manager/attributes.rb +37 -13
  212. data/test/ral/manager/instances.rb +82 -0
  213. data/test/ral/manager/provider.rb +60 -22
  214. data/test/ral/manager/type.rb +9 -6
  215. data/test/ral/providers/cron/crontab.rb +59 -7
  216. data/test/ral/providers/group.rb +7 -7
  217. data/test/ral/providers/host/netinfo.rb +5 -6
  218. data/test/ral/providers/host/parsed.rb +4 -4
  219. data/test/ral/providers/mount/parsed.rb +11 -6
  220. data/test/ral/providers/nameservice.rb +2 -2
  221. data/test/ral/providers/package.rb +39 -14
  222. data/test/ral/providers/package/apt.rb +72 -3
  223. data/test/ral/providers/package/aptitude.rb +15 -12
  224. data/test/ral/providers/package/aptrpm.rb +3 -3
  225. data/test/ral/providers/package/dpkg.rb +2 -2
  226. data/test/ral/providers/parsedfile.rb +114 -88
  227. data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
  228. data/test/ral/providers/provider.rb +93 -13
  229. data/test/ral/providers/service.rb +52 -26
  230. data/test/ral/providers/sshkey/parsed.rb +3 -3
  231. data/test/ral/providers/user.rb +19 -20
  232. data/test/ral/providers/user/useradd.rb +1 -5
  233. data/test/ral/types/cron.rb +49 -36
  234. data/test/ral/types/file.rb +38 -35
  235. data/test/ral/types/file/target.rb +4 -4
  236. data/test/ral/types/filesources.rb +24 -22
  237. data/test/ral/types/group.rb +4 -2
  238. data/test/ral/types/host.rb +17 -10
  239. data/test/ral/types/mount.rb +40 -23
  240. data/test/ral/types/package.rb +62 -5
  241. data/test/ral/types/parameter.rb +2 -2
  242. data/test/ral/types/property.rb +27 -20
  243. data/test/ral/types/resources.rb +4 -16
  244. data/test/ral/types/schedule.rb +2 -2
  245. data/test/ral/types/service.rb +2 -3
  246. data/test/ral/types/sshkey.rb +3 -3
  247. data/test/ral/types/tidy.rb +6 -15
  248. data/test/ral/types/user.rb +17 -17
  249. data/test/ral/types/yumrepo.rb +2 -2
  250. data/test/ral/types/zone.rb +71 -87
  251. data/test/util/autoload.rb +6 -21
  252. data/test/util/config.rb +201 -101
  253. data/test/util/fact_store.rb +67 -0
  254. data/test/util/features.rb +9 -6
  255. data/test/util/instance_loader.rb +53 -0
  256. data/test/util/loadedfile.rb +17 -1
  257. data/test/util/metrics.rb +54 -57
  258. data/test/util/posixtest.rb +8 -11
  259. data/test/util/utiltest.rb +31 -2
  260. metadata +520 -492
  261. data/TODO +0 -4
  262. data/lib/puppet/network/client/logger.rb +0 -6
  263. data/lib/puppet/network/handler/logger.rb +0 -52
  264. data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
  265. data/lib/puppet/type/parsedtype.rb +0 -219
  266. data/test/network/handler/logger.rb +0 -183
data/TODO DELETED
@@ -1,4 +0,0 @@
1
- $Id: TODO 576 2005-08-23 16:09:14Z luke $
2
-
3
- * Syntax for configuration of types (e.g., search path for Services)
4
- * Get file parsing working in the language
@@ -1,6 +0,0 @@
1
- class Puppet::Network::Client::Logger < Puppet::Network::Client::ProxyClient
2
- @handler = Puppet::Network::Handler.handler(:logger)
3
- self.mkmethods
4
- end
5
-
6
- # $Id: logger.rb 2259 2007-03-06 19:03:05Z luke $
@@ -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 $