puppet 0.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (182) hide show
  1. data/CHANGELOG +0 -0
  2. data/COPYING +340 -0
  3. data/LICENSE +17 -0
  4. data/README +24 -0
  5. data/Rakefile +294 -0
  6. data/TODO +4 -0
  7. data/bin/cf2puppet +186 -0
  8. data/bin/puppet +176 -0
  9. data/bin/puppetca +213 -0
  10. data/bin/puppetd +246 -0
  11. data/bin/puppetdoc +184 -0
  12. data/bin/puppetmasterd +258 -0
  13. data/examples/code/allatonce +13 -0
  14. data/examples/code/assignments +11 -0
  15. data/examples/code/classing +35 -0
  16. data/examples/code/components +73 -0
  17. data/examples/code/execs +16 -0
  18. data/examples/code/failers/badclassnoparam +10 -0
  19. data/examples/code/failers/badclassparam +10 -0
  20. data/examples/code/failers/badcompnoparam +9 -0
  21. data/examples/code/failers/badcompparam +9 -0
  22. data/examples/code/failers/badtypeparam +3 -0
  23. data/examples/code/file.bl +11 -0
  24. data/examples/code/filedefaults +10 -0
  25. data/examples/code/fileparsing +116 -0
  26. data/examples/code/filerecursion +15 -0
  27. data/examples/code/functions +3 -0
  28. data/examples/code/groups +7 -0
  29. data/examples/code/head +30 -0
  30. data/examples/code/importing +8 -0
  31. data/examples/code/nodes +20 -0
  32. data/examples/code/one +8 -0
  33. data/examples/code/relationships +34 -0
  34. data/examples/code/selectors +28 -0
  35. data/examples/code/simpletests +11 -0
  36. data/examples/code/snippets/argumentdefaults +14 -0
  37. data/examples/code/snippets/casestatement +39 -0
  38. data/examples/code/snippets/classheirarchy.pp +15 -0
  39. data/examples/code/snippets/classincludes.pp +17 -0
  40. data/examples/code/snippets/classpathtest +11 -0
  41. data/examples/code/snippets/dirchmod +19 -0
  42. data/examples/code/snippets/failmissingexecpath.pp +13 -0
  43. data/examples/code/snippets/falsevalues.pp +3 -0
  44. data/examples/code/snippets/filecreate +11 -0
  45. data/examples/code/snippets/implicititeration +15 -0
  46. data/examples/code/snippets/multipleinstances +7 -0
  47. data/examples/code/snippets/namevartest +9 -0
  48. data/examples/code/snippets/scopetest +13 -0
  49. data/examples/code/snippets/selectorvalues.pp +22 -0
  50. data/examples/code/snippets/simpledefaults +5 -0
  51. data/examples/code/snippets/simpleselector +38 -0
  52. data/examples/code/svncommit +13 -0
  53. data/examples/root/bin/sleeper +69 -0
  54. data/examples/root/etc/configfile +0 -0
  55. data/examples/root/etc/debian-passwd +29 -0
  56. data/examples/root/etc/debian-syslog.conf +71 -0
  57. data/examples/root/etc/init.d/sleeper +65 -0
  58. data/examples/root/etc/otherfile +0 -0
  59. data/examples/root/etc/puppet/fileserver.conf +3 -0
  60. data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
  61. data/ext/module:puppet +195 -0
  62. data/install.rb +270 -0
  63. data/lib/puppet.rb +249 -0
  64. data/lib/puppet/base64.rb +19 -0
  65. data/lib/puppet/client.rb +519 -0
  66. data/lib/puppet/config.rb +49 -0
  67. data/lib/puppet/daemon.rb +208 -0
  68. data/lib/puppet/element.rb +71 -0
  69. data/lib/puppet/event.rb +259 -0
  70. data/lib/puppet/log.rb +321 -0
  71. data/lib/puppet/metric.rb +250 -0
  72. data/lib/puppet/parsedfile.rb +38 -0
  73. data/lib/puppet/parser/ast.rb +1560 -0
  74. data/lib/puppet/parser/interpreter.rb +150 -0
  75. data/lib/puppet/parser/lexer.rb +226 -0
  76. data/lib/puppet/parser/parser.rb +1354 -0
  77. data/lib/puppet/parser/scope.rb +755 -0
  78. data/lib/puppet/server.rb +170 -0
  79. data/lib/puppet/server/authstore.rb +227 -0
  80. data/lib/puppet/server/ca.rb +140 -0
  81. data/lib/puppet/server/filebucket.rb +147 -0
  82. data/lib/puppet/server/fileserver.rb +477 -0
  83. data/lib/puppet/server/logger.rb +43 -0
  84. data/lib/puppet/server/master.rb +103 -0
  85. data/lib/puppet/server/servlet.rb +247 -0
  86. data/lib/puppet/sslcertificates.rb +737 -0
  87. data/lib/puppet/statechange.rb +150 -0
  88. data/lib/puppet/storage.rb +95 -0
  89. data/lib/puppet/transaction.rb +179 -0
  90. data/lib/puppet/transportable.rb +151 -0
  91. data/lib/puppet/type.rb +1354 -0
  92. data/lib/puppet/type/component.rb +141 -0
  93. data/lib/puppet/type/cron.rb +543 -0
  94. data/lib/puppet/type/exec.rb +316 -0
  95. data/lib/puppet/type/group.rb +152 -0
  96. data/lib/puppet/type/nameservice.rb +3 -0
  97. data/lib/puppet/type/nameservice/netinfo.rb +173 -0
  98. data/lib/puppet/type/nameservice/objectadd.rb +146 -0
  99. data/lib/puppet/type/nameservice/posix.rb +200 -0
  100. data/lib/puppet/type/package.rb +420 -0
  101. data/lib/puppet/type/package/apt.rb +70 -0
  102. data/lib/puppet/type/package/dpkg.rb +108 -0
  103. data/lib/puppet/type/package/rpm.rb +81 -0
  104. data/lib/puppet/type/package/sun.rb +117 -0
  105. data/lib/puppet/type/package/yum.rb +58 -0
  106. data/lib/puppet/type/pfile.rb +569 -0
  107. data/lib/puppet/type/pfile/checksum.rb +219 -0
  108. data/lib/puppet/type/pfile/create.rb +108 -0
  109. data/lib/puppet/type/pfile/group.rb +129 -0
  110. data/lib/puppet/type/pfile/mode.rb +131 -0
  111. data/lib/puppet/type/pfile/source.rb +264 -0
  112. data/lib/puppet/type/pfile/type.rb +31 -0
  113. data/lib/puppet/type/pfile/uid.rb +166 -0
  114. data/lib/puppet/type/pfilebucket.rb +80 -0
  115. data/lib/puppet/type/pprocess.rb +97 -0
  116. data/lib/puppet/type/service.rb +347 -0
  117. data/lib/puppet/type/service/base.rb +17 -0
  118. data/lib/puppet/type/service/debian.rb +50 -0
  119. data/lib/puppet/type/service/init.rb +145 -0
  120. data/lib/puppet/type/service/smf.rb +29 -0
  121. data/lib/puppet/type/state.rb +182 -0
  122. data/lib/puppet/type/symlink.rb +183 -0
  123. data/lib/puppet/type/tidy.rb +183 -0
  124. data/lib/puppet/type/typegen.rb +149 -0
  125. data/lib/puppet/type/typegen/filerecord.rb +243 -0
  126. data/lib/puppet/type/typegen/filetype.rb +316 -0
  127. data/lib/puppet/type/user.rb +290 -0
  128. data/lib/puppet/util.rb +138 -0
  129. data/test/certmgr/certmgr.rb +265 -0
  130. data/test/client/client.rb +203 -0
  131. data/test/executables/puppetbin.rb +53 -0
  132. data/test/executables/puppetca.rb +79 -0
  133. data/test/executables/puppetd.rb +71 -0
  134. data/test/executables/puppetmasterd.rb +153 -0
  135. data/test/executables/puppetmodule.rb +60 -0
  136. data/test/language/ast.rb +412 -0
  137. data/test/language/interpreter.rb +71 -0
  138. data/test/language/scope.rb +412 -0
  139. data/test/language/snippets.rb +445 -0
  140. data/test/other/events.rb +111 -0
  141. data/test/other/log.rb +195 -0
  142. data/test/other/metrics.rb +92 -0
  143. data/test/other/overrides.rb +115 -0
  144. data/test/other/parsedfile.rb +31 -0
  145. data/test/other/relationships.rb +113 -0
  146. data/test/other/state.rb +106 -0
  147. data/test/other/storage.rb +39 -0
  148. data/test/other/transactions.rb +235 -0
  149. data/test/parser/lexer.rb +120 -0
  150. data/test/parser/parser.rb +180 -0
  151. data/test/puppet/conffiles.rb +104 -0
  152. data/test/puppet/defaults.rb +100 -0
  153. data/test/puppet/error.rb +23 -0
  154. data/test/puppet/utiltest.rb +120 -0
  155. data/test/puppettest.rb +774 -0
  156. data/test/server/authstore.rb +209 -0
  157. data/test/server/bucket.rb +227 -0
  158. data/test/server/ca.rb +201 -0
  159. data/test/server/fileserver.rb +710 -0
  160. data/test/server/logger.rb +175 -0
  161. data/test/server/master.rb +150 -0
  162. data/test/server/server.rb +130 -0
  163. data/test/tagging/tagging.rb +80 -0
  164. data/test/test +51 -0
  165. data/test/types/basic.rb +119 -0
  166. data/test/types/component.rb +272 -0
  167. data/test/types/cron.rb +261 -0
  168. data/test/types/exec.rb +273 -0
  169. data/test/types/file.rb +616 -0
  170. data/test/types/filebucket.rb +167 -0
  171. data/test/types/fileignoresource.rb +287 -0
  172. data/test/types/filesources.rb +587 -0
  173. data/test/types/filetype.rb +162 -0
  174. data/test/types/group.rb +271 -0
  175. data/test/types/package.rb +205 -0
  176. data/test/types/query.rb +101 -0
  177. data/test/types/service.rb +100 -0
  178. data/test/types/symlink.rb +93 -0
  179. data/test/types/tidy.rb +124 -0
  180. data/test/types/type.rb +135 -0
  181. data/test/types/user.rb +371 -0
  182. metadata +243 -0
@@ -0,0 +1,175 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '../../lib'
3
+ $:.unshift '..'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'test/unit'
9
+ require 'puppettest.rb'
10
+ require 'base64'
11
+ require 'cgi'
12
+
13
+ class TestLogger < Test::Unit::TestCase
14
+ include ServerTest
15
+
16
+ # Test the log driver manually
17
+ def test_localaddlog
18
+ logger = nil
19
+ assert_nothing_raised {
20
+ logger = Puppet::Server::Logger.new
21
+ }
22
+
23
+ msg = nil
24
+ assert_nothing_raised {
25
+ msg = Puppet::Log.create(
26
+ :level => :info,
27
+ :message => "This is a message"
28
+ )
29
+ }
30
+
31
+ assert_nothing_raised {
32
+ logger.addlog(msg)
33
+ }
34
+ end
35
+
36
+ # Test it while replicating a remote client
37
+ def test_remoteaddlog
38
+ logger = nil
39
+ assert_nothing_raised {
40
+ logger = Puppet::Server::Logger.new
41
+ }
42
+
43
+ msg = nil
44
+ assert_nothing_raised {
45
+ msg = Puppet::Log.create(
46
+ :level => :info,
47
+ :message => "This is a remote message"
48
+ )
49
+ }
50
+
51
+ assert_nothing_raised {
52
+ msg = CGI.escape(Marshal::dump(msg))
53
+ }
54
+ assert_nothing_raised {
55
+ logger.addlog(msg, "localhost", "127.0.0.1")
56
+ }
57
+ end
58
+
59
+ # Now test it with a real client and server, but not remote
60
+ def test_localclient
61
+ client = nil
62
+ assert_nothing_raised {
63
+ client = Puppet::Client::LogClient.new(:Logger => true)
64
+ }
65
+
66
+ msg = nil
67
+ assert_nothing_raised {
68
+ msg = Puppet::Log.create(
69
+ :level => :info,
70
+ :message => "This is a logclient message"
71
+ )
72
+ }
73
+
74
+ msg = CGI.escape(Marshal::dump(msg))
75
+
76
+ assert_nothing_raised {
77
+ client.addlog(msg, "localhost", "127.0.0.1")
78
+ }
79
+ end
80
+
81
+ # And now test over the network
82
+ def test_logclient
83
+ pid = nil
84
+ clientlog = tempfile()
85
+ serverlog = tempfile()
86
+ Puppet.warning "serverlog is %s" % serverlog
87
+ Puppet[:logdest] = clientlog
88
+ Puppet::Log.close(:syslog)
89
+
90
+ # For testing
91
+ Puppet[:autosign] = true
92
+
93
+ logger = nil
94
+ # Create our server
95
+ assert_nothing_raised {
96
+ logger = Puppet::Server.new(
97
+ :Port => @@port,
98
+ :Handlers => {
99
+ :CA => {}, # so that certs autogenerate
100
+ :Logger => {}
101
+ }
102
+ )
103
+ }
104
+
105
+ # Start our server
106
+ serverpid = fork {
107
+ Puppet::Log.close(clientlog)
108
+ Puppet[:logdest] = serverlog
109
+ assert_nothing_raised() {
110
+ trap(:INT) { logger.shutdown }
111
+ logger.start
112
+ }
113
+ }
114
+ @@tmppids << serverpid
115
+ sleep(0.5)
116
+
117
+ # Start a raw xmlrpc client
118
+ client = nil
119
+ assert_nothing_raised() {
120
+ client = Puppet::Client::LogClient.new(
121
+ :Server => "localhost",
122
+ :Port => @@port
123
+ )
124
+ unless client.readcert
125
+ raise "Could not get certs"
126
+ end
127
+ }
128
+ retval = nil
129
+
130
+ {
131
+ :notice => "XMLRPC1",
132
+ :warning => "XMLRPC2",
133
+ :err => "XMLRPC3"
134
+ }.each { |level, str|
135
+ msg = CGI.escape(Marshal::dump(Puppet::Log.create(
136
+ :level => level,
137
+ :message => str
138
+ )))
139
+ assert_nothing_raised {
140
+ retval = client.addlog(msg)
141
+ }
142
+ }
143
+
144
+ # and now use the normal client action
145
+
146
+ # Set the log destination to be the server
147
+ Puppet[:logdest] = "localhost:%s" % @@port
148
+
149
+ # And now do some logging
150
+ assert_nothing_raised {
151
+ Puppet.notice "TEST1"
152
+ Puppet.warning "TEST2"
153
+ Puppet.err "TEST3"
154
+ }
155
+
156
+ assert_nothing_raised {
157
+ Process.kill("INT", serverpid)
158
+ }
159
+
160
+ assert(FileTest.exists?(serverlog), "Server log does not exist")
161
+
162
+ # Give it a bit to flush to disk
163
+ sleep(0.5)
164
+ content = nil
165
+ assert_nothing_raised {
166
+ content = File.read(serverlog)
167
+ }
168
+
169
+ %w{TEST1 TEST2 TEST3}.each { |str|
170
+ assert(content =~ %r{#{str}}, "Content does not match %s" % str)
171
+ }
172
+ end
173
+ end
174
+
175
+ # $Id: logger.rb 751 2005-11-22 05:54:25Z luke $
@@ -0,0 +1,150 @@
1
+ if __FILE__ == $0
2
+ if Dir.getwd =~ /test\/server$/
3
+ Dir.chdir("..")
4
+ end
5
+
6
+ $:.unshift '../lib'
7
+ $puppetbase = ".."
8
+
9
+ end
10
+
11
+ require 'puppet'
12
+ require 'puppet/server'
13
+ require 'puppet/client'
14
+ require 'test/unit'
15
+ require 'puppettest.rb'
16
+
17
+ class TestMaster < Test::Unit::TestCase
18
+ include ServerTest
19
+ def teardown
20
+ super
21
+ #print "\n\n\n\n" if Puppet[:debug]
22
+ end
23
+
24
+ # run through all of the existing test files and make sure everything
25
+ # works
26
+ def test_files
27
+ count = 0
28
+ textfiles { |file|
29
+ Puppet.debug("parsing %s" % file)
30
+ client = nil
31
+ master = nil
32
+
33
+ # create our master
34
+ assert_nothing_raised() {
35
+ # this is the default server setup
36
+ master = Puppet::Server::Master.new(
37
+ :File => file,
38
+ :UseNodes => false,
39
+ :Local => true
40
+ )
41
+ }
42
+
43
+ # and our client
44
+ assert_nothing_raised() {
45
+ client = Puppet::Client::MasterClient.new(
46
+ :Master => master
47
+ )
48
+ }
49
+
50
+ # pull our configuration a few times
51
+ assert_nothing_raised() {
52
+ client.getconfig
53
+ stopservices
54
+ Puppet::Type.allclear
55
+ }
56
+ assert_nothing_raised() {
57
+ client.getconfig
58
+ stopservices
59
+ Puppet::Type.allclear
60
+ }
61
+ assert_nothing_raised() {
62
+ client.getconfig
63
+ stopservices
64
+ Puppet::Type.allclear
65
+ }
66
+ # only test three files; that's plenty
67
+ if count > 3
68
+ break
69
+ end
70
+ count += 1
71
+ }
72
+ end
73
+
74
+ def test_defaultmanifest
75
+ textfiles { |file|
76
+ Puppet[:manifest] = file
77
+ client = nil
78
+ master = nil
79
+ assert_nothing_raised() {
80
+ # this is the default server setup
81
+ master = Puppet::Server::Master.new(
82
+ :File => file,
83
+ :UseNodes => false,
84
+ :Local => true
85
+ )
86
+ }
87
+ assert_nothing_raised() {
88
+ client = Puppet::Client::MasterClient.new(
89
+ :Master => master
90
+ )
91
+ }
92
+
93
+ # pull our configuration
94
+ assert_nothing_raised() {
95
+ client.getconfig
96
+ stopservices
97
+ Puppet::Type.allclear
98
+ }
99
+
100
+ break
101
+ }
102
+ end
103
+
104
+ def test_filereread
105
+ manifest = mktestmanifest()
106
+
107
+ file2 = @createdfile + "2"
108
+ @@tmpfiles << file2
109
+
110
+ client = master = nil
111
+ assert_nothing_raised() {
112
+ # this is the default server setup
113
+ master = Puppet::Server::Master.new(
114
+ :File => manifest,
115
+ :UseNodes => false,
116
+ :Local => true,
117
+ :FileTimeout => 0.5
118
+ )
119
+ }
120
+ assert_nothing_raised() {
121
+ client = Puppet::Client::MasterClient.new(
122
+ :Master => master
123
+ )
124
+ }
125
+
126
+ assert_nothing_raised {
127
+ client.getconfig
128
+ client.apply
129
+ }
130
+
131
+ assert(FileTest.exists?(@createdfile),
132
+ "Created file %s does not exist" % @createdfile)
133
+ sleep 1
134
+ Puppet::Type.allclear
135
+
136
+ File.open(manifest, "w") { |f|
137
+ f.puts "file { \"%s\": create => true }\n" % file2
138
+ }
139
+ assert_nothing_raised {
140
+ client.getconfig
141
+ client.apply
142
+ }
143
+
144
+ assert(FileTest.exists?(file2), "Second file %s does not exist" % file2)
145
+ end
146
+
147
+ end
148
+
149
+ # $Id: master.rb 751 2005-11-22 05:54:25Z luke $
150
+
@@ -0,0 +1,130 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '../../lib'
3
+ $:.unshift '..'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'cgi'
9
+ #require 'puppet/server'
10
+ require 'facter'
11
+ require 'puppet/client'
12
+ require 'xmlrpc/client'
13
+ require 'test/unit'
14
+ require 'puppettest.rb'
15
+
16
+ # $Id: server.rb 747 2005-11-22 03:54:30Z luke $
17
+
18
+ if ARGV.length > 0 and ARGV[0] == "short"
19
+ $short = true
20
+ else
21
+ $short = false
22
+ end
23
+
24
+ class TestServer < Test::Unit::TestCase
25
+ include ServerTest
26
+ def teardown
27
+ super
28
+ #print "\n\n\n\n" if Puppet[:debug]
29
+ end
30
+
31
+ # test that we can connect to the server
32
+ # we have to use fork here, because we apparently can't use threads
33
+ # to talk to other threads
34
+ def test_connect_with_fork
35
+ server = nil
36
+ Puppet[:autosign] = true
37
+
38
+ # create a server just serving status
39
+ assert_nothing_raised() {
40
+ server = Puppet::Server.new(
41
+ :Port => @@port,
42
+ :Handlers => {
43
+ :CA => {}, # so that certs autogenerate
44
+ :Status => nil
45
+ }
46
+ )
47
+
48
+ }
49
+
50
+ # and fork
51
+ serverpid = fork {
52
+ assert_nothing_raised() {
53
+ trap(:INT) { server.shutdown }
54
+ server.start
55
+ }
56
+ }
57
+ @@tmppids << serverpid
58
+
59
+ # create a status client, and verify it can talk
60
+ client = nil
61
+ assert_nothing_raised() {
62
+ client = Puppet::Client::StatusClient.new(
63
+ :Server => "localhost",
64
+ :Port => @@port
65
+ )
66
+ }
67
+ retval = nil
68
+
69
+ assert_nothing_raised() {
70
+ retval = client.status
71
+ }
72
+
73
+ assert_equal(1, retval)
74
+ end
75
+
76
+ # similar to the last test, but this time actually run getconfig
77
+ def test_getconfig_with_fork
78
+ Puppet[:autosign] = true
79
+ serverpid = nil
80
+
81
+ file = mktestmanifest()
82
+
83
+ server = nil
84
+ # make our server again
85
+ assert_nothing_raised() {
86
+ server = Puppet::Server.new(
87
+ :Port => @@port,
88
+ :Handlers => {
89
+ :CA => {}, # so that certs autogenerate
90
+ :Master => {
91
+ :UseNodes => false,
92
+ :File => file
93
+ },
94
+ :Status => nil
95
+ }
96
+ )
97
+
98
+ }
99
+ serverpid = fork {
100
+ assert_nothing_raised() {
101
+ #trap(:INT) { server.shutdown; Kernel.exit! }
102
+ trap(:INT) { server.shutdown }
103
+ server.start
104
+ }
105
+ }
106
+ @@tmppids << serverpid
107
+
108
+ client = nil
109
+
110
+ # and then start a masterclient
111
+ assert_nothing_raised() {
112
+ client = Puppet::Client::MasterClient.new(
113
+ :Server => "localhost",
114
+ :Port => @@port
115
+ )
116
+ }
117
+ retval = nil
118
+
119
+ # and run getconfig a couple of times
120
+ assert_nothing_raised() {
121
+ retval = client.getconfig
122
+ }
123
+ assert_instance_of(Puppet::TransBucket, retval,
124
+ "Server returned something other than a TransBucket")
125
+
126
+ assert_nothing_raised() {
127
+ retval = client.getconfig
128
+ }
129
+ end
130
+ end