puppet 2.6.11 → 2.6.12

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 (67) hide show
  1. data/CHANGELOG +33 -0
  2. data/conf/redhat/puppet.spec +7 -4
  3. data/lib/puppet.rb +1 -1
  4. data/lib/puppet/application/cert.rb +17 -3
  5. data/lib/puppet/application/kick.rb +0 -2
  6. data/lib/puppet/defaults.rb +52 -3
  7. data/lib/puppet/network/handler/ca.rb +16 -106
  8. data/lib/puppet/network/handler/master.rb +0 -3
  9. data/lib/puppet/network/handler/runner.rb +1 -0
  10. data/lib/puppet/ssl/certificate.rb +6 -0
  11. data/lib/puppet/ssl/certificate_authority.rb +86 -11
  12. data/lib/puppet/ssl/certificate_authority/interface.rb +64 -19
  13. data/lib/puppet/ssl/certificate_factory.rb +112 -91
  14. data/lib/puppet/ssl/certificate_request.rb +88 -1
  15. data/lib/puppet/ssl/host.rb +16 -3
  16. data/lib/puppet/type/file.rb +0 -1
  17. data/lib/puppet/util/command_line/puppetca +23 -2
  18. data/lib/puppet/util/monkey_patches.rb +69 -0
  19. data/lib/puppet/util/settings.rb +5 -0
  20. data/spec/integration/defaults_spec.rb +11 -0
  21. data/spec/integration/network/handler_spec.rb +1 -1
  22. data/spec/unit/configurer_spec.rb +2 -2
  23. data/spec/unit/network/handler/ca_spec.rb +86 -0
  24. data/spec/unit/ssl/certificate_authority/interface_spec.rb +92 -53
  25. data/spec/unit/ssl/certificate_authority_spec.rb +133 -23
  26. data/spec/unit/ssl/certificate_factory_spec.rb +90 -70
  27. data/spec/unit/ssl/certificate_request_spec.rb +62 -1
  28. data/spec/unit/ssl/certificate_spec.rb +31 -0
  29. data/spec/unit/ssl/host_spec.rb +44 -2
  30. data/spec/unit/util/settings_spec.rb +10 -0
  31. data/test/language/functions.rb +0 -1
  32. data/test/language/snippets.rb +0 -9
  33. data/test/lib/puppettest/exetest.rb +1 -1
  34. data/test/lib/puppettest/servertest.rb +0 -1
  35. data/test/rails/rails.rb +0 -1
  36. data/test/ral/type/filesources.rb +0 -60
  37. metadata +5 -34
  38. data/lib/puppet/network/client.rb +0 -179
  39. data/lib/puppet/network/client/ca.rb +0 -56
  40. data/lib/puppet/network/client/file.rb +0 -6
  41. data/lib/puppet/network/client/proxy.rb +0 -27
  42. data/lib/puppet/network/client/report.rb +0 -26
  43. data/lib/puppet/network/client/runner.rb +0 -10
  44. data/lib/puppet/network/client/status.rb +0 -4
  45. data/lib/puppet/network/http_server.rb +0 -3
  46. data/lib/puppet/network/http_server/mongrel.rb +0 -150
  47. data/lib/puppet/network/http_server/webrick.rb +0 -155
  48. data/lib/puppet/network/xmlrpc/client.rb +0 -211
  49. data/lib/puppet/sslcertificates.rb +0 -146
  50. data/lib/puppet/sslcertificates/ca.rb +0 -375
  51. data/lib/puppet/sslcertificates/certificate.rb +0 -255
  52. data/lib/puppet/sslcertificates/inventory.rb +0 -38
  53. data/lib/puppet/sslcertificates/monkey_patch.rb +0 -6
  54. data/lib/puppet/sslcertificates/support.rb +0 -146
  55. data/spec/integration/network/client_spec.rb +0 -19
  56. data/spec/unit/network/client_spec.rb +0 -45
  57. data/spec/unit/network/xmlrpc/client_spec.rb +0 -172
  58. data/spec/unit/sslcertificates/ca_spec.rb +0 -110
  59. data/test/certmgr/certmgr.rb +0 -308
  60. data/test/certmgr/inventory.rb +0 -69
  61. data/test/certmgr/support.rb +0 -105
  62. data/test/network/client/ca.rb +0 -69
  63. data/test/network/client/dipper.rb +0 -34
  64. data/test/network/handler/ca.rb +0 -273
  65. data/test/network/server/mongrel_test.rb +0 -99
  66. data/test/network/server/webrick.rb +0 -128
  67. data/test/network/xmlrpc/client.rb +0 -45
@@ -1,99 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../lib/puppettest'
4
-
5
- require 'puppettest'
6
- require 'mocha'
7
-
8
- class TestMongrelServer < PuppetTest::TestCase
9
- confine "Missing mongrel" => Puppet.features.mongrel?
10
-
11
- include PuppetTest::ServerTest
12
-
13
- def mkserver(handlers = nil)
14
- handlers ||= { :Status => nil }
15
- mongrel = Puppet::Network::HTTPServer::Mongrel.new(handlers)
16
- end
17
-
18
- # Make sure client info is correctly extracted.
19
- def test_client_info
20
- obj = Object.new
21
- obj.singleton_class.send(:attr_accessor, :params)
22
- params = {}
23
- obj.params = params
24
-
25
- mongrel = mkserver
26
-
27
- ip = Facter.value(:ipaddress)
28
- params["REMOTE_ADDR"] = ip
29
- params[Puppet[:ssl_client_header]] = ""
30
- params[Puppet[:ssl_client_verify_header]] = "failure"
31
- info = nil
32
- Resolv.expects(:getname).with(ip).returns("host.domain.com").times(4)
33
- assert_nothing_raised("Could not call client_info") do
34
- info = mongrel.send(:client_info, obj)
35
- end
36
- assert(! info.authenticated?, "Client info object was marked valid even though headers were missing")
37
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
38
-
39
- assert_equal("host.domain.com", info.name, "Did not copy over hostname correctly")
40
-
41
- # Now pass the X-Forwarded-For header and check it is preferred over REMOTE_ADDR
42
- params["REMOTE_ADDR"] = '127.0.0.1'
43
- params["HTTP_X_FORWARDED_FOR"] = ip
44
- info = nil
45
- assert_nothing_raised("Could not call client_info") do
46
- info = mongrel.send(:client_info, obj)
47
- end
48
- assert(! info.authenticated?, "Client info object was marked valid even though headers were missing")
49
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
50
-
51
- assert_equal("host.domain.com", info.name, "Did not copy over hostname correctly")
52
-
53
- # Now add a valid auth header.
54
- params["REMOTE_ADDR"] = ip
55
- params["HTTP_X_FORWARDED_FOR"] = nil
56
- params[Puppet[:ssl_client_header]] = "/CN=host.domain.com"
57
- assert_nothing_raised("Could not call client_info") do
58
- info = mongrel.send(:client_info, obj)
59
- end
60
- assert(! info.authenticated?, "Client info object was marked valid even though the verify header was fals")
61
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
62
- assert_equal("host.domain.com", info.name, "Did not copy over hostname correctly")
63
-
64
- # Now change the verify header to be true
65
- params[Puppet[:ssl_client_verify_header]] = "SUCCESS"
66
- assert_nothing_raised("Could not call client_info") do
67
- info = mongrel.send(:client_info, obj)
68
- end
69
-
70
- assert(info.authenticated?, "Client info object was not marked valid even though all headers were correct")
71
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
72
- assert_equal("host.domain.com", info.name, "Did not copy over hostname correctly")
73
-
74
- # Now try it with a different header name
75
- params.delete(Puppet[:ssl_client_header])
76
- Puppet[:ssl_client_header] = "header_testing"
77
- params["header_testing"] = "/CN=other.domain.com"
78
- info = nil
79
- assert_nothing_raised("Could not call client_info with other header") do
80
- info = mongrel.send(:client_info, obj)
81
- end
82
-
83
- assert(info.authenticated?, "Client info object was not marked valid even though the header was present")
84
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
85
- assert_equal("other.domain.com", info.name, "Did not copy over hostname correctly")
86
-
87
- # Now make sure it's considered invalid without that header
88
- params.delete("header_testing")
89
- info = nil
90
- assert_nothing_raised("Could not call client_info with no header") do
91
- info = mongrel.send(:client_info, obj)
92
- end
93
-
94
- assert(! info.authenticated?, "Client info object was marked valid without header")
95
- assert_equal(ip, info.ip, "Did not copy over ip correctly")
96
- assert_equal(Resolv.getname(ip), info.name, "Did not look up hostname correctly")
97
- end
98
- end
99
-
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../lib/puppettest'
4
-
5
- require 'puppettest'
6
- require 'puppet/network/http_server/webrick'
7
- require 'mocha'
8
-
9
- class TestWebrickServer < Test::Unit::TestCase
10
- include PuppetTest::ServerTest
11
-
12
- def setup
13
- Puppet::Util::SUIDManager.stubs(:asuser).yields
14
- super
15
- end
16
-
17
- def teardown
18
- super
19
- Puppet::Network::HttpPool.clear_http_instances
20
- end
21
-
22
- # Make sure we can create a server, and that it knows how to create its
23
- # certs by default.
24
- def test_basics
25
- server = nil
26
- assert_raise(Puppet::Error, "server succeeded with no cert") do
27
-
28
- server = Puppet::Network::HTTPServer::WEBrick.new(
29
-
30
- :Port => @@port,
31
-
32
- :Handlers => {
33
- :Status => nil
34
- }
35
- )
36
- end
37
-
38
- assert_nothing_raised("Could not create simple server") do
39
-
40
- server = Puppet::Network::HTTPServer::WEBrick.new(
41
-
42
- :Port => @@port,
43
-
44
- :Handlers => {
45
- :CA => {}, # so that certs autogenerate
46
- :Status => nil
47
- }
48
- )
49
- end
50
-
51
- assert(server, "did not create server")
52
-
53
- assert(server.cert, "did not retrieve cert")
54
- end
55
-
56
- # test that we can connect to the server
57
- # we have to use fork here, because we apparently can't use threads
58
- # to talk to other threads
59
- def test_connect_with_fork
60
- Puppet[:autosign] = true
61
- serverpid, server = mk_status_server
62
-
63
- # create a status client, and verify it can talk
64
- client = mk_status_client
65
-
66
- assert(client.cert, "did not get cert for client")
67
-
68
- retval = nil
69
- assert_nothing_raised("Could not connect to server") {
70
- retval = client.status
71
- }
72
- assert_equal(1, retval)
73
- end
74
-
75
- def mk_status_client
76
- client = nil
77
-
78
- assert_nothing_raised {
79
-
80
- client = Puppet::Network::Client.status.new(
81
-
82
- :Server => "localhost",
83
-
84
- :Port => @@port
85
- )
86
- }
87
- client
88
- end
89
-
90
- def mk_status_server
91
- server = nil
92
- Puppet[:certdnsnames] = "localhost"
93
- assert_nothing_raised {
94
-
95
- server = Puppet::Network::HTTPServer::WEBrick.new(
96
-
97
- :Port => @@port,
98
-
99
- :Handlers => {
100
- :CA => {}, # so that certs autogenerate
101
- :Status => nil
102
- }
103
- )
104
-
105
- }
106
-
107
- pid = fork {
108
- Puppet.run_mode.stubs(:master?).returns true
109
- assert_nothing_raised {
110
- trap(:INT) { server.shutdown }
111
- server.start
112
- }
113
- }
114
- @@tmppids << pid
115
- [pid, server]
116
- end
117
-
118
- def kill_and_wait(pid, file)
119
- %x{kill -INT #{pid} 2>/dev/null}
120
- count = 0
121
- while count < 30 && File::exist?(file)
122
- count += 1
123
- sleep(1)
124
- end
125
- assert(count < 30, "Killing server #{pid} failed")
126
- end
127
- end
128
-
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../lib/puppettest'
4
-
5
- require 'puppettest'
6
- require 'puppet/network/xmlrpc/client'
7
- require 'mocha'
8
-
9
- class TestXMLRPCClient < Test::Unit::TestCase
10
- include PuppetTest
11
-
12
- def setup
13
- Puppet::Util::SUIDManager.stubs(:asuser).yields
14
- super
15
- end
16
-
17
- def test_set_backtrace
18
- error = Puppet::Network::XMLRPCClientError.new("An error")
19
- assert_nothing_raised do
20
- error.set_backtrace ["caller"]
21
- end
22
- assert_equal(["caller"], error.backtrace)
23
- end
24
-
25
- # Make sure we correctly generate a netclient
26
- def test_handler_class
27
- # Create a test handler
28
- klass = Puppet::Network::XMLRPCClient
29
- yay = Class.new(Puppet::Network::Handler) do
30
- @interface = XMLRPC::Service::Interface.new("yay") { |iface|
31
- iface.add_method("array getcert(csr)")
32
- }
33
-
34
- @name = :Yay
35
- end
36
- Object.const_set("Yay", yay)
37
-
38
- net = nil
39
- assert_nothing_raised("Failed when retrieving client for handler") do
40
- net = klass.handler_class(yay)
41
- end
42
-
43
- assert(net, "did not get net client")
44
- end
45
- end