chef-zero 0.9.2 → 0.9.3

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.
@@ -15,26 +15,21 @@ module ChefZero
15
15
  end
16
16
 
17
17
  def call(env)
18
+ rest_path = env['PATH_INFO'].split('/').select { |part| part != "" }
19
+ method = env['REQUEST_METHOD'].downcase.to_sym
20
+ if !self.respond_to?(method)
21
+ accept_methods = [:get, :put, :post, :delete].select { |m| self.respond_to?(m) }
22
+ accept_methods_str = accept_methods.map { |m| m.to_s.upcase }.join(', ')
23
+ return [405, {"Content-Type" => "text/plain", "Allow" => accept_methods_str}, "Bad request method for '#{env['REQUEST_PATH']}': #{env['REQUEST_METHOD']}"]
24
+ end
25
+ if json_only && !env['HTTP_ACCEPT'].split(';').include?('application/json')
26
+ return [406, {"Content-Type" => "text/plain"}, "Must accept application/json"]
27
+ end
28
+ # Dispatch to get()/post()/put()/delete()
18
29
  begin
19
- rest_path = env['PATH_INFO'].split('/').select { |part| part != "" }
20
- method = env['REQUEST_METHOD'].downcase.to_sym
21
- if !self.respond_to?(method)
22
- accept_methods = [:get, :put, :post, :delete].select { |m| self.respond_to?(m) }
23
- accept_methods_str = accept_methods.map { |m| m.to_s.upcase }.join(', ')
24
- return [405, {"Content-Type" => "text/plain", "Allow" => accept_methods_str}, "Bad request method for '#{env['REQUEST_PATH']}': #{env['REQUEST_METHOD']}"]
25
- end
26
- if json_only && !env['HTTP_ACCEPT'].split(';').include?('application/json')
27
- return [406, {"Content-Type" => "text/plain"}, "Must accept application/json"]
28
- end
29
- # Dispatch to get()/post()/put()/delete()
30
- begin
31
- self.send(method, RestRequest.new(env))
32
- rescue RestErrorResponse => e
33
- error(e.response_code, e.error)
34
- end
35
- rescue
36
- Chef::Log.error("#{$!.inspect}\n#{$!.backtrace.join("\n")}")
37
- raise
30
+ self.send(method, RestRequest.new(env))
31
+ rescue RestErrorResponse => e
32
+ error(e.response_code, e.error)
38
33
  end
39
34
  end
40
35
 
@@ -13,14 +13,19 @@ module ChefZero
13
13
  attr_accessor :not_found
14
14
 
15
15
  def call(env)
16
- Chef::Log.debug "#{env['REQUEST_METHOD']} #{env['PATH_INFO']}#{env['QUERY_STRING'] != '' ? "?" + env['QUERY_STRING'] : ''}"
17
- clean_path = "/" + env['PATH_INFO'].split('/').select { |part| part != "" }.join("/")
18
- routes.each do |route, endpoint|
19
- if route.match(clean_path)
20
- return endpoint.call(env)
16
+ begin
17
+ Chef::Log.debug "#{env['REQUEST_METHOD']} #{env['PATH_INFO']}#{env['QUERY_STRING'] != '' ? "?" + env['QUERY_STRING'] : ''}"
18
+ clean_path = "/" + env['PATH_INFO'].split('/').select { |part| part != "" }.join("/")
19
+ routes.each do |route, endpoint|
20
+ if route.match(clean_path)
21
+ return endpoint.call(env)
22
+ end
21
23
  end
24
+ not_found.call(env)
25
+ rescue
26
+ Chef::Log.error("#{$!.inspect}\n#{$!.backtrace.join("\n")}")
27
+ [500, {"Content-Type" => "text/plain"}, "Exception raised! #{$!.inspect}\n#{$!.backtrace.join("\n")}"]
22
28
  end
23
- not_found.call(env)
24
29
  end
25
30
  end
26
31
  end
@@ -18,8 +18,8 @@ module ChefZero
18
18
  @client_key = value
19
19
  end
20
20
 
21
- def when_the_chef_server(description, &block)
22
- context "When the Chef server #{description}" do
21
+ def when_the_chef_server(description, *tags, &block)
22
+ context "When the Chef server #{description}", *tags do
23
23
  before :each do
24
24
  unless ChefZero::RSpec.server
25
25
  # Set up configuration so that clients will point to the server
@@ -34,9 +34,19 @@ module ChefZero
34
34
  ChefZero::RSpec.server.clear_data
35
35
  end
36
36
 
37
+ @old_chef_server_url = Chef::Config.chef_server_url
38
+ @old_node_name = Chef::Config.node_name
39
+ @old_client_key = Chef::Config.client_key
37
40
  Chef::Config.chef_server_url = ChefZero::RSpec.server.url
38
41
  Chef::Config.node_name = 'admin'
39
42
  Chef::Config.client_key = ChefZero::RSpec.client_key
43
+ Chef::Config.http_retry_count = 0
44
+ end
45
+
46
+ after :each do
47
+ Chef::Config.chef_server_url = @old_chef_server_url
48
+ Chef::Config.node_name = @old_node_name
49
+ Chef::Config.client_key = @old_client_key
40
50
  end
41
51
 
42
52
  def self.client(name, client)
@@ -151,15 +151,15 @@ module ChefZero
151
151
  def load_data(contents)
152
152
  %w(clients environments nodes roles users).each do |data_type|
153
153
  if contents[data_type]
154
- dejsonize_children!(contents[data_type])
155
- data[data_type].merge!(contents[data_type])
154
+ data[data_type].merge!(dejsonize_children(contents[data_type]))
156
155
  end
157
156
  end
158
157
  if contents['data']
159
- contents['data'].values.each do |data_bag|
160
- dejsonize_children!(data_bag)
158
+ new_data = {}
159
+ contents['data'].each_pair do |key, data_bag|
160
+ new_data[key] = dejsonize_children(data_bag)
161
161
  end
162
- data['data'].merge!(contents['data'])
162
+ data['data'].merge!(new_data)
163
163
  end
164
164
  if contents['cookbooks']
165
165
  contents['cookbooks'].each_pair do |name_version, cookbook|
@@ -243,10 +243,12 @@ module ChefZero
243
243
  router
244
244
  end
245
245
 
246
- def dejsonize_children!(hash)
246
+ def dejsonize_children(hash)
247
+ result = {}
247
248
  hash.each_pair do |key, value|
248
- hash[key] = JSON.pretty_generate(value) if value.is_a?(Hash)
249
+ result[key] = value.is_a?(Hash) ? JSON.pretty_generate(value) : value
249
250
  end
251
+ result
250
252
  end
251
253
 
252
254
  def get_file(directory, path)
@@ -1,3 +1,3 @@
1
1
  module ChefZero
2
- VERSION = '0.9.2'
2
+ VERSION = '0.9.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-31 00:00:00.000000000 Z
12
+ date: 2013-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef