chef-zero 14.0.12 → 15.0.2

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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -6
  3. data/Rakefile +9 -1
  4. data/bin/chef-zero +5 -4
  5. data/chef-zero.gemspec +2 -5
  6. data/lib/chef_zero.rb +1 -1
  7. data/lib/chef_zero/chef_data/cookbook_data.rb +2 -2
  8. data/lib/chef_zero/chef_data/data_normalizer.rb +9 -7
  9. data/lib/chef_zero/chef_data/default_creator.rb +8 -5
  10. data/lib/chef_zero/data_store/data_already_exists_error.rb +1 -1
  11. data/lib/chef_zero/data_store/data_error.rb +1 -1
  12. data/lib/chef_zero/data_store/data_not_found_error.rb +1 -1
  13. data/lib/chef_zero/data_store/default_facade.rb +4 -4
  14. data/lib/chef_zero/data_store/interface_v2.rb +1 -1
  15. data/lib/chef_zero/data_store/memory_store.rb +3 -3
  16. data/lib/chef_zero/data_store/memory_store_v2.rb +22 -14
  17. data/lib/chef_zero/data_store/raw_file_store.rb +7 -5
  18. data/lib/chef_zero/data_store/v1_to_v2_adapter.rb +11 -1
  19. data/lib/chef_zero/data_store/v2_to_v1_adapter.rb +1 -1
  20. data/lib/chef_zero/dist.rb +9 -0
  21. data/lib/chef_zero/endpoints/acl_endpoint.rb +4 -3
  22. data/lib/chef_zero/endpoints/acls_endpoint.rb +6 -5
  23. data/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +2 -1
  24. data/lib/chef_zero/endpoints/actor_endpoint.rb +4 -4
  25. data/lib/chef_zero/endpoints/actor_key_endpoint.rb +1 -1
  26. data/lib/chef_zero/endpoints/actor_keys_endpoint.rb +3 -2
  27. data/lib/chef_zero/endpoints/actors_endpoint.rb +2 -2
  28. data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +3 -2
  29. data/lib/chef_zero/endpoints/container_endpoint.rb +3 -3
  30. data/lib/chef_zero/endpoints/containers_endpoint.rb +3 -3
  31. data/lib/chef_zero/endpoints/controls_endpoint.rb +3 -2
  32. data/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +1 -1
  33. data/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +3 -3
  34. data/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +1 -1
  35. data/lib/chef_zero/endpoints/cookbook_endpoint.rb +1 -1
  36. data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +8 -6
  37. data/lib/chef_zero/endpoints/cookbooks_base.rb +5 -3
  38. data/lib/chef_zero/endpoints/cookbooks_endpoint.rb +1 -1
  39. data/lib/chef_zero/endpoints/data_bag_endpoint.rb +4 -4
  40. data/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +4 -4
  41. data/lib/chef_zero/endpoints/data_bags_endpoint.rb +3 -3
  42. data/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +2 -2
  43. data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +14 -11
  44. data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +2 -2
  45. data/lib/chef_zero/endpoints/environment_endpoint.rb +3 -3
  46. data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +2 -2
  47. data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +2 -2
  48. data/lib/chef_zero/endpoints/environment_role_endpoint.rb +2 -2
  49. data/lib/chef_zero/endpoints/file_store_file_endpoint.rb +1 -1
  50. data/lib/chef_zero/endpoints/group_endpoint.rb +3 -3
  51. data/lib/chef_zero/endpoints/groups_endpoint.rb +2 -2
  52. data/lib/chef_zero/endpoints/license_endpoint.rb +2 -2
  53. data/lib/chef_zero/endpoints/node_endpoint.rb +3 -3
  54. data/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +2 -2
  55. data/lib/chef_zero/endpoints/nodes_endpoint.rb +3 -3
  56. data/lib/chef_zero/endpoints/not_found_endpoint.rb +2 -2
  57. data/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +3 -2
  58. data/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +2 -2
  59. data/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +2 -2
  60. data/lib/chef_zero/endpoints/organization_endpoint.rb +4 -3
  61. data/lib/chef_zero/endpoints/organization_user_base.rb +2 -2
  62. data/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +1 -1
  63. data/lib/chef_zero/endpoints/organization_user_endpoint.rb +2 -2
  64. data/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +2 -2
  65. data/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +1 -1
  66. data/lib/chef_zero/endpoints/organization_users_endpoint.rb +3 -3
  67. data/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +2 -2
  68. data/lib/chef_zero/endpoints/organizations_endpoint.rb +2 -2
  69. data/lib/chef_zero/endpoints/policies_endpoint.rb +1 -1
  70. data/lib/chef_zero/endpoints/policy_endpoint.rb +1 -1
  71. data/lib/chef_zero/endpoints/policy_group_endpoint.rb +3 -3
  72. data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +4 -4
  73. data/lib/chef_zero/endpoints/policy_groups_endpoint.rb +3 -3
  74. data/lib/chef_zero/endpoints/policy_revision_endpoint.rb +1 -1
  75. data/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +1 -1
  76. data/lib/chef_zero/endpoints/principal_endpoint.rb +3 -3
  77. data/lib/chef_zero/endpoints/rest_list_endpoint.rb +3 -3
  78. data/lib/chef_zero/endpoints/rest_object_endpoint.rb +4 -3
  79. data/lib/chef_zero/endpoints/role_endpoint.rb +3 -3
  80. data/lib/chef_zero/endpoints/role_environments_endpoint.rb +2 -2
  81. data/lib/chef_zero/endpoints/sandbox_endpoint.rb +4 -4
  82. data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +2 -2
  83. data/lib/chef_zero/endpoints/search_endpoint.rb +9 -9
  84. data/lib/chef_zero/endpoints/searches_endpoint.rb +1 -1
  85. data/lib/chef_zero/endpoints/server_api_version_endpoint.rb +1 -1
  86. data/lib/chef_zero/endpoints/system_recovery_endpoint.rb +4 -4
  87. data/lib/chef_zero/endpoints/universe_endpoint.rb +3 -3
  88. data/lib/chef_zero/endpoints/user_association_request_endpoint.rb +3 -2
  89. data/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +2 -2
  90. data/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +2 -2
  91. data/lib/chef_zero/endpoints/user_organizations_endpoint.rb +2 -2
  92. data/lib/chef_zero/endpoints/version_endpoint.rb +3 -2
  93. data/lib/chef_zero/rest_base.rb +20 -16
  94. data/lib/chef_zero/rest_request.rb +10 -6
  95. data/lib/chef_zero/rest_router.rb +3 -3
  96. data/lib/chef_zero/rspec.rb +6 -5
  97. data/lib/chef_zero/server.rb +100 -95
  98. data/lib/chef_zero/socketless_server_map.rb +4 -2
  99. data/lib/chef_zero/solr/query/phrase.rb +2 -2
  100. data/lib/chef_zero/solr/query/range_query.rb +3 -3
  101. data/lib/chef_zero/solr/query/term.rb +1 -1
  102. data/lib/chef_zero/solr/solr_parser.rb +12 -10
  103. data/lib/chef_zero/version.rb +1 -1
  104. data/spec/run_oc_pedant.rb +8 -6
  105. data/spec/search_spec.rb +2 -2
  106. data/spec/server_spec.rb +2 -2
  107. data/spec/socketless_server_map_spec.rb +1 -1
  108. data/spec/support/oc_pedant.rb +1 -1
  109. metadata +7 -34
@@ -1,4 +1,4 @@
1
- require "chef_zero/rest_base"
1
+ require_relative "../rest_base"
2
2
 
3
3
  module ChefZero
4
4
  module Endpoints
@@ -1,4 +1,4 @@
1
- require "chef_zero/rest_base"
1
+ require_relative "../rest_base"
2
2
 
3
3
  module ChefZero
4
4
  module Endpoints
@@ -1,5 +1,5 @@
1
- require "ffi_yajl"
2
- require "chef_zero/rest_base"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "../rest_base"
3
3
 
4
4
  module ChefZero
5
5
  module Endpoints
@@ -10,13 +10,13 @@ module ChefZero
10
10
  name = request_json["username"]
11
11
  password = request_json["password"]
12
12
  user = get_data(request, request.rest_path[0..-2] + ["users", name], :nil)
13
- if !user
13
+ unless user
14
14
  raise RestErrorResponse.new(403, "Nonexistent user")
15
15
  end
16
16
 
17
17
  user = FFI_Yajl::Parser.parse(user)
18
18
  user = ChefData::DataNormalizer.normalize_user(user, name, [ "username" ], server.options[:osc_compat])
19
- if !user["recovery_authentication_enabled"]
19
+ unless user["recovery_authentication_enabled"]
20
20
  raise RestErrorResponse.new(403, "Only users with recovery_authentication_enabled=true may use /system_recovery to log in")
21
21
  end
22
22
  if user["password"] != password
@@ -1,6 +1,6 @@
1
- require "ffi_yajl"
2
- require "chef_zero/endpoints/rest_object_endpoint"
3
- require "chef_zero/chef_data/data_normalizer"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "rest_object_endpoint"
3
+ require_relative "../chef_data/data_normalizer"
4
4
 
5
5
  module ChefZero
6
6
  module Endpoints
@@ -1,5 +1,5 @@
1
- require "ffi_yajl"
2
- require "chef_zero/rest_base"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "../rest_base"
3
3
 
4
4
  module ChefZero
5
5
  module Endpoints
@@ -11,6 +11,7 @@ module ChefZero
11
11
  if id !~ /^#{username}-(.+)/
12
12
  raise RestErrorResponse.new(400, "Association request #{id} is invalid. Must be #{username}-orgname.")
13
13
  end
14
+
14
15
  orgname = $1
15
16
 
16
17
  json = FFI_Yajl::Parser.parse(request.body)
@@ -1,5 +1,5 @@
1
- require "ffi_yajl"
2
- require "chef_zero/rest_base"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "../rest_base"
3
3
 
4
4
  module ChefZero
5
5
  module Endpoints
@@ -1,5 +1,5 @@
1
- require "ffi_yajl"
2
- require "chef_zero/rest_base"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "../rest_base"
3
3
 
4
4
  module ChefZero
5
5
  module Endpoints
@@ -1,5 +1,5 @@
1
- require "ffi_yajl"
2
- require "chef_zero/rest_base"
1
+ require "ffi_yajl" unless defined?(FFI_Yajl)
2
+ require_relative "../rest_base"
3
3
 
4
4
  module ChefZero
5
5
  module Endpoints
@@ -1,11 +1,12 @@
1
- require "chef_zero/rest_base"
1
+ require_relative "../rest_base"
2
+ require_relative "../dist"
2
3
 
3
4
  module ChefZero
4
5
  module Endpoints
5
6
  # /version
6
7
  class VersionEndpoint < RestBase
7
8
  def get(request)
8
- text_response(200, "chef-zero #{ChefZero::VERSION}\n")
9
+ text_response(200, "#{ChefZero::Dist::CLIENT} #{ChefZero::VERSION}\n")
9
10
  end
10
11
  end
11
12
  end
@@ -1,7 +1,7 @@
1
- require "chef_zero/rest_request"
2
- require "chef_zero/rest_error_response"
3
- require "chef_zero/data_store/data_not_found_error"
4
- require "chef_zero/chef_data/acl_path"
1
+ require_relative "rest_request"
2
+ require_relative "rest_error_response"
3
+ require_relative "data_store/data_not_found_error"
4
+ require_relative "chef_data/acl_path"
5
5
 
6
6
  module ChefZero
7
7
  class RestBase
@@ -30,15 +30,13 @@ module ChefZero
30
30
  }
31
31
 
32
32
  return json_response(406,
33
- response,
34
- request_version: version, response_version: -1
35
- )
33
+ response,
34
+ request_version: version, response_version: -1)
36
35
  end
37
36
  rescue ArgumentError
38
37
  json_response(406,
39
- { "username" => request.requestor },
40
- request_version: -1, response_version: -1
41
- )
38
+ { "username" => request.requestor },
39
+ request_version: -1, response_version: -1)
42
40
  end
43
41
 
44
42
  def call(request)
@@ -46,14 +44,15 @@ module ChefZero
46
44
  return response unless response.nil?
47
45
 
48
46
  method = request.method.downcase.to_sym
49
- if !respond_to?(method)
50
- accept_methods = [:get, :put, :post, :delete].select { |m| respond_to?(m) }
47
+ unless respond_to?(method)
48
+ accept_methods = %i{get put post delete}.select { |m| respond_to?(m) }
51
49
  accept_methods_str = accept_methods.map { |m| m.to_s.upcase }.join(", ")
52
- return [405, { "Content-Type" => "text/plain", "Allow" => accept_methods_str }, "Bad request method for '#{request.env['REQUEST_PATH']}': #{request.env['REQUEST_METHOD']}"]
50
+ return [405, { "Content-Type" => "text/plain", "Allow" => accept_methods_str }, "Bad request method for '#{request.env["REQUEST_PATH"]}': #{request.env["REQUEST_METHOD"]}"]
53
51
  end
54
52
  if json_only && !accepts?(request, "application", "json")
55
53
  return [406, { "Content-Type" => "text/plain" }, "Must accept application/json"]
56
54
  end
55
+
57
56
  # Dispatch to get()/post()/put()/delete()
58
57
  begin
59
58
  send(method, request)
@@ -70,14 +69,15 @@ module ChefZero
70
69
  def accepts?(request, category, type)
71
70
  # If HTTP_ACCEPT is not sent at all, assume it accepts anything
72
71
  # This parses as per http://tools.ietf.org/html/rfc7231#section-5.3
73
- return true if !request.env["HTTP_ACCEPT"]
72
+ return true unless request.env["HTTP_ACCEPT"]
73
+
74
74
  accepts = request.env["HTTP_ACCEPT"].split(/,\s*/).map { |x| x.split(";", 2)[0].strip }
75
75
  accepts.include?("#{category}/#{type}") || accepts.include?("#{category}/*") || accepts.include?("*/*")
76
76
  end
77
77
 
78
78
  def get_data(request, rest_path = nil, *options)
79
79
  rest_path ||= request.rest_path
80
- rest_path = rest_path.map { |v| URI.decode(v) }
80
+ rest_path = rest_path.map { |v| self.class.rfc2396_parser.unescape(v) }
81
81
  begin
82
82
  data_store.get(rest_path, request)
83
83
  rescue DataStore::DataNotFoundError
@@ -284,7 +284,7 @@ module ChefZero
284
284
  end
285
285
 
286
286
  def self.build_uri(base_uri, rest_path)
287
- "#{base_uri}/#{rest_path.map { |v| URI.escape(v) }.join('/')}"
287
+ "#{base_uri}/#{rest_path.map { |v| rfc2396_parser.escape(v) }.join("/")}"
288
288
  end
289
289
 
290
290
  def populate_defaults(request, response)
@@ -324,5 +324,9 @@ module ChefZero
324
324
  name.size > 255 ||
325
325
  name =~ /[+ !]/
326
326
  end
327
+
328
+ def self.rfc2396_parser
329
+ @parser ||= URI::RFC2396_Parser.new
330
+ end
327
331
  end
328
332
  end
@@ -1,8 +1,8 @@
1
1
  require "rack/request"
2
+ require "cgi" unless defined?(CGI)
2
3
 
3
4
  module ChefZero
4
5
  class RestRequest
5
-
6
6
  def initialize(env, rest_base_prefix = [])
7
7
  @env = env
8
8
  @rest_base_prefix = rest_base_prefix
@@ -18,7 +18,7 @@ module ChefZero
18
18
  else
19
19
  scheme = env["rack.url_scheme"]
20
20
  end
21
- @base_uri ||= "#{scheme}://#{env['HTTP_HOST']}#{env['SCRIPT_NAME']}"
21
+ @base_uri ||= "#{scheme}://#{env["HTTP_HOST"]}#{env["SCRIPT_NAME"]}"
22
22
  end
23
23
 
24
24
  def base_uri=(value)
@@ -61,24 +61,28 @@ module ChefZero
61
61
  @query_params ||= begin
62
62
  params = Rack::Request.new(env).GET
63
63
  params.keys.each do |key|
64
- params[key] = URI.unescape(params[key])
64
+ params[key] = self.class.rfc2396_parser.unescape(params[key])
65
65
  end
66
66
  params
67
67
  end
68
68
  end
69
69
 
70
70
  def to_s
71
- result = "#{method} #{rest_path.join('/')}"
71
+ result = "#{method} #{rest_path.join("/")}"
72
72
  if query_params.size > 0
73
- result << "?#{query_params.map { |k, v| "#{k}=#{v}" }.join('&')}"
73
+ result << "?#{query_params.map { |k, v| "#{k}=#{v}" }.join("&")}"
74
74
  end
75
75
  if body.chomp != ""
76
76
  result << "\n--- #{method} BODY ---\n"
77
77
  result << body
78
- result << "\n" if !body.end_with?("\n")
78
+ result << "\n" unless body.end_with?("\n")
79
79
  result << "--- END #{method} BODY ---"
80
80
  end
81
81
  result
82
82
  end
83
+
84
+ def self.rfc2396_parser
85
+ @parser ||= URI::RFC2396_Parser.new
86
+ end
83
87
  end
84
88
  end
@@ -1,13 +1,13 @@
1
- require "pp"
1
+ require "pp" unless defined?(PP)
2
2
 
3
3
  module ChefZero
4
4
  class RestRouter
5
5
  def initialize(routes)
6
6
  @routes = routes.map do |route, endpoint|
7
7
  if route =~ /\*\*$/
8
- pattern = Regexp.new("^#{route[0..-3].gsub('*', '[^/]*')}")
8
+ pattern = Regexp.new("^#{route[0..-3].gsub("*", "[^/]*")}")
9
9
  else
10
- pattern = Regexp.new("^#{route.gsub('*', '[^/]*')}$")
10
+ pattern = Regexp.new("^#{route.gsub("*", "[^/]*")}$")
11
11
  end
12
12
  [ pattern, endpoint ]
13
13
  end
@@ -1,6 +1,6 @@
1
- require "tempfile"
2
- require "chef_zero/server"
3
- require "chef_zero/rest_request"
1
+ require "tempfile" unless defined?(Tempfile)
2
+ require_relative "server"
3
+ require_relative "rest_request"
4
4
 
5
5
  module ChefZero
6
6
  module RSpec
@@ -42,7 +42,7 @@ module ChefZero
42
42
  extend RSpecClassMethods
43
43
 
44
44
  def when_the_chef_server(description, *tags, &block)
45
- context "When the Chef server #{description}", *tags do
45
+ context "When the #{ChefZero::Dist::PRODUCT} server #{description}", *tags do
46
46
  extend WhenTheChefServerClassMethods
47
47
  include WhenTheChefServerInstanceMethods
48
48
 
@@ -69,7 +69,8 @@ module ChefZero
69
69
  if chef_server_options[:server_scope] != self.class.chef_server_options[:server_scope]
70
70
  raise "server_scope: #{chef_server_options[:server_scope]} will not be honored: it can only be set on when_the_chef_server!"
71
71
  end
72
- Log.info("Starting Chef server with options #{chef_server_options}")
72
+
73
+ Log.info("Starting #{ChefZero::Dist::PRODUCT} server with options #{chef_server_options}")
73
74
 
74
75
  ChefZero::RSpec.set_server_options(chef_server_options)
75
76
 
@@ -16,96 +16,97 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "openssl"
20
- require "open-uri"
21
- require "rubygems"
22
- require "timeout"
23
- require "stringio"
24
-
25
- require "rack"
26
- require "webrick"
19
+ require "openssl" unless defined?(OpenSSL)
20
+ require "open-uri" unless defined?(OpenURI)
21
+ require "rubygems" unless defined?(Gem)
22
+ require "timeout" unless defined?(Timeout)
23
+ require "stringio" unless defined?(StringIO)
24
+
25
+ require "rack" unless defined?(Rack)
26
+ require "webrick" unless defined?(WEBrick)
27
27
  require "webrick/https"
28
28
 
29
- require "chef_zero"
30
- require "chef_zero/socketless_server_map"
31
- require "chef_zero/chef_data/cookbook_data"
32
- require "chef_zero/chef_data/acl_path"
33
- require "chef_zero/rest_router"
34
- require "chef_zero/data_store/memory_store_v2"
35
- require "chef_zero/data_store/v1_to_v2_adapter"
36
- require "chef_zero/data_store/default_facade"
37
- require "chef_zero/version"
38
-
39
- require "chef_zero/endpoints/rest_list_endpoint"
40
- require "chef_zero/endpoints/authenticate_user_endpoint"
41
- require "chef_zero/endpoints/acls_endpoint"
42
- require "chef_zero/endpoints/acl_endpoint"
43
- require "chef_zero/endpoints/actor_endpoint"
44
- require "chef_zero/endpoints/actors_endpoint"
45
- require "chef_zero/endpoints/actor_key_endpoint"
46
- require "chef_zero/endpoints/organization_user_key_endpoint"
47
- require "chef_zero/endpoints/organization_user_default_key_endpoint"
48
- require "chef_zero/endpoints/organization_user_keys_endpoint"
49
- require "chef_zero/endpoints/actor_default_key_endpoint"
50
- require "chef_zero/endpoints/actor_keys_endpoint"
51
- require "chef_zero/endpoints/cookbooks_endpoint"
52
- require "chef_zero/endpoints/cookbook_endpoint"
53
- require "chef_zero/endpoints/cookbook_version_endpoint"
54
- require "chef_zero/endpoints/cookbook_artifacts_endpoint"
55
- require "chef_zero/endpoints/cookbook_artifact_endpoint"
56
- require "chef_zero/endpoints/cookbook_artifact_identifier_endpoint"
57
- require "chef_zero/endpoints/containers_endpoint"
58
- require "chef_zero/endpoints/container_endpoint"
59
- require "chef_zero/endpoints/controls_endpoint"
60
- require "chef_zero/endpoints/dummy_endpoint"
61
- require "chef_zero/endpoints/data_bags_endpoint"
62
- require "chef_zero/endpoints/data_bag_endpoint"
63
- require "chef_zero/endpoints/data_bag_item_endpoint"
64
- require "chef_zero/endpoints/groups_endpoint"
65
- require "chef_zero/endpoints/group_endpoint"
66
- require "chef_zero/endpoints/environment_endpoint"
67
- require "chef_zero/endpoints/environment_cookbooks_endpoint"
68
- require "chef_zero/endpoints/environment_cookbook_endpoint"
69
- require "chef_zero/endpoints/environment_cookbook_versions_endpoint"
70
- require "chef_zero/endpoints/environment_nodes_endpoint"
71
- require "chef_zero/endpoints/environment_recipes_endpoint"
72
- require "chef_zero/endpoints/environment_role_endpoint"
73
- require "chef_zero/endpoints/license_endpoint"
74
- require "chef_zero/endpoints/node_endpoint"
75
- require "chef_zero/endpoints/nodes_endpoint"
76
- require "chef_zero/endpoints/node_identifiers_endpoint"
77
- require "chef_zero/endpoints/organizations_endpoint"
78
- require "chef_zero/endpoints/organization_endpoint"
79
- require "chef_zero/endpoints/organization_association_requests_endpoint"
80
- require "chef_zero/endpoints/organization_association_request_endpoint"
81
- require "chef_zero/endpoints/organization_authenticate_user_endpoint"
82
- require "chef_zero/endpoints/organization_users_endpoint"
83
- require "chef_zero/endpoints/organization_user_endpoint"
84
- require "chef_zero/endpoints/organization_validator_key_endpoint"
85
- require "chef_zero/endpoints/policies_endpoint"
86
- require "chef_zero/endpoints/policy_endpoint"
87
- require "chef_zero/endpoints/policy_revisions_endpoint"
88
- require "chef_zero/endpoints/policy_revision_endpoint"
89
- require "chef_zero/endpoints/policy_groups_endpoint"
90
- require "chef_zero/endpoints/policy_group_endpoint"
91
- require "chef_zero/endpoints/policy_group_policy_endpoint"
92
- require "chef_zero/endpoints/principal_endpoint"
93
- require "chef_zero/endpoints/role_endpoint"
94
- require "chef_zero/endpoints/role_environments_endpoint"
95
- require "chef_zero/endpoints/sandboxes_endpoint"
96
- require "chef_zero/endpoints/sandbox_endpoint"
97
- require "chef_zero/endpoints/searches_endpoint"
98
- require "chef_zero/endpoints/search_endpoint"
99
- require "chef_zero/endpoints/system_recovery_endpoint"
100
- require "chef_zero/endpoints/user_association_requests_endpoint"
101
- require "chef_zero/endpoints/user_association_requests_count_endpoint"
102
- require "chef_zero/endpoints/user_association_request_endpoint"
103
- require "chef_zero/endpoints/user_organizations_endpoint"
104
- require "chef_zero/endpoints/file_store_file_endpoint"
105
- require "chef_zero/endpoints/not_found_endpoint"
106
- require "chef_zero/endpoints/version_endpoint"
107
- require "chef_zero/endpoints/server_api_version_endpoint"
108
- require "chef_zero/endpoints/universe_endpoint"
29
+ require_relative "../chef_zero"
30
+ require_relative "socketless_server_map"
31
+ require_relative "chef_data/cookbook_data"
32
+ require_relative "chef_data/acl_path"
33
+ require_relative "rest_router"
34
+ require_relative "data_store/memory_store_v2"
35
+ require_relative "data_store/v1_to_v2_adapter"
36
+ require_relative "data_store/default_facade"
37
+ require_relative "version"
38
+ require "chef_zero/dist.rb"
39
+
40
+ require_relative "endpoints/rest_list_endpoint"
41
+ require_relative "endpoints/authenticate_user_endpoint"
42
+ require_relative "endpoints/acls_endpoint"
43
+ require_relative "endpoints/acl_endpoint"
44
+ require_relative "endpoints/actor_endpoint"
45
+ require_relative "endpoints/actors_endpoint"
46
+ require_relative "endpoints/actor_key_endpoint"
47
+ require_relative "endpoints/organization_user_key_endpoint"
48
+ require_relative "endpoints/organization_user_default_key_endpoint"
49
+ require_relative "endpoints/organization_user_keys_endpoint"
50
+ require_relative "endpoints/actor_default_key_endpoint"
51
+ require_relative "endpoints/actor_keys_endpoint"
52
+ require_relative "endpoints/cookbooks_endpoint"
53
+ require_relative "endpoints/cookbook_endpoint"
54
+ require_relative "endpoints/cookbook_version_endpoint"
55
+ require_relative "endpoints/cookbook_artifacts_endpoint"
56
+ require_relative "endpoints/cookbook_artifact_endpoint"
57
+ require_relative "endpoints/cookbook_artifact_identifier_endpoint"
58
+ require_relative "endpoints/containers_endpoint"
59
+ require_relative "endpoints/container_endpoint"
60
+ require_relative "endpoints/controls_endpoint"
61
+ require_relative "endpoints/dummy_endpoint"
62
+ require_relative "endpoints/data_bags_endpoint"
63
+ require_relative "endpoints/data_bag_endpoint"
64
+ require_relative "endpoints/data_bag_item_endpoint"
65
+ require_relative "endpoints/groups_endpoint"
66
+ require_relative "endpoints/group_endpoint"
67
+ require_relative "endpoints/environment_endpoint"
68
+ require_relative "endpoints/environment_cookbooks_endpoint"
69
+ require_relative "endpoints/environment_cookbook_endpoint"
70
+ require_relative "endpoints/environment_cookbook_versions_endpoint"
71
+ require_relative "endpoints/environment_nodes_endpoint"
72
+ require_relative "endpoints/environment_recipes_endpoint"
73
+ require_relative "endpoints/environment_role_endpoint"
74
+ require_relative "endpoints/license_endpoint"
75
+ require_relative "endpoints/node_endpoint"
76
+ require_relative "endpoints/nodes_endpoint"
77
+ require_relative "endpoints/node_identifiers_endpoint"
78
+ require_relative "endpoints/organizations_endpoint"
79
+ require_relative "endpoints/organization_endpoint"
80
+ require_relative "endpoints/organization_association_requests_endpoint"
81
+ require_relative "endpoints/organization_association_request_endpoint"
82
+ require_relative "endpoints/organization_authenticate_user_endpoint"
83
+ require_relative "endpoints/organization_users_endpoint"
84
+ require_relative "endpoints/organization_user_endpoint"
85
+ require_relative "endpoints/organization_validator_key_endpoint"
86
+ require_relative "endpoints/policies_endpoint"
87
+ require_relative "endpoints/policy_endpoint"
88
+ require_relative "endpoints/policy_revisions_endpoint"
89
+ require_relative "endpoints/policy_revision_endpoint"
90
+ require_relative "endpoints/policy_groups_endpoint"
91
+ require_relative "endpoints/policy_group_endpoint"
92
+ require_relative "endpoints/policy_group_policy_endpoint"
93
+ require_relative "endpoints/principal_endpoint"
94
+ require_relative "endpoints/role_endpoint"
95
+ require_relative "endpoints/role_environments_endpoint"
96
+ require_relative "endpoints/sandboxes_endpoint"
97
+ require_relative "endpoints/sandbox_endpoint"
98
+ require_relative "endpoints/searches_endpoint"
99
+ require_relative "endpoints/search_endpoint"
100
+ require_relative "endpoints/system_recovery_endpoint"
101
+ require_relative "endpoints/user_association_requests_endpoint"
102
+ require_relative "endpoints/user_association_requests_count_endpoint"
103
+ require_relative "endpoints/user_association_request_endpoint"
104
+ require_relative "endpoints/user_organizations_endpoint"
105
+ require_relative "endpoints/file_store_file_endpoint"
106
+ require_relative "endpoints/not_found_endpoint"
107
+ require_relative "endpoints/version_endpoint"
108
+ require_relative "endpoints/server_api_version_endpoint"
109
+ require_relative "endpoints/universe_endpoint"
109
110
 
110
111
  module ChefZero
111
112
 
@@ -175,7 +176,8 @@ module ChefZero
175
176
  end
176
177
 
177
178
  def local_mode_url
178
- raise "Port not yet set, cannot generate URL" unless port.kind_of?(Integer)
179
+ raise "Port not yet set, cannot generate URL" unless port.is_a?(Integer)
180
+
179
181
  "chefzero://localhost:#{port}"
180
182
  end
181
183
 
@@ -231,7 +233,7 @@ module ChefZero
231
233
  if publish
232
234
  output = publish.respond_to?(:puts) ? publish : STDOUT
233
235
  output.puts <<-EOH.gsub(/^ {10}/, "")
234
- >> Starting Chef Zero (v#{ChefZero::VERSION})...
236
+ >> Starting #{ChefZero::Dist::PRODUCT} (v#{ChefZero::VERSION})...
235
237
  EOH
236
238
  end
237
239
 
@@ -248,7 +250,7 @@ module ChefZero
248
250
 
249
251
  %w{INT TERM}.each do |signal|
250
252
  Signal.trap(signal) do
251
- puts "\n>> Stopping Chef Zero..."
253
+ puts "\n>> Stopping #{ChefZero::Dist::PRODUCT}..."
252
254
  @server.shutdown
253
255
  end
254
256
  end
@@ -274,7 +276,7 @@ module ChefZero
274
276
  true
275
277
  rescue Errno::EADDRINUSE
276
278
  ChefZero::Log.warn("Port #{port} not available")
277
- @server.listeners.each { |l| l.close }
279
+ @server.listeners.each(&:close)
278
280
  @server.listeners.clear
279
281
  false
280
282
  end
@@ -304,7 +306,7 @@ module ChefZero
304
306
  break
305
307
  end
306
308
  end
307
- if !@port
309
+ unless @port
308
310
  raise Errno::EADDRINUSE,
309
311
  "No port in :port range #{options[:port]} is available"
310
312
  end
@@ -362,7 +364,7 @@ module ChefZero
362
364
  end
363
365
  rescue Timeout::Error
364
366
  if @thread
365
- ChefZero::Log.error("Chef Zero did not stop within #{wait} seconds! Killing...")
367
+ ChefZero::Log.error("#{ChefZero::Dist::PRODUCT} did not stop within #{wait} seconds! Killing...")
366
368
  @thread.kill
367
369
  SocketlessServerMap.deregister(port)
368
370
  end
@@ -500,11 +502,13 @@ module ChefZero
500
502
  else
501
503
  cookbook_data = ChefData::CookbookData.to_hash(cookbook, name_version)
502
504
  end
503
- raise "No version specified" if !cookbook_data[:version]
505
+ raise "No version specified" unless cookbook_data[:version]
506
+
504
507
  data_store.create_dir(["organizations", org_name, cookbook_type], cookbook_data[:cookbook_name], :recursive)
505
508
  data_store.set(["organizations", org_name, cookbook_type, cookbook_data[:cookbook_name], cookbook_data[:version]], FFI_Yajl::Encoder.encode(cookbook_data, pretty: true), :create)
506
509
  cookbook_data.values.each do |files|
507
510
  next unless files.is_a? Array
511
+
508
512
  files.each do |file|
509
513
  data_store.set(["organizations", org_name, "file_store", "checksums", file[:checksum]], get_file(cookbook, file[:path]), :create)
510
514
  end
@@ -641,6 +645,7 @@ module ChefZero
641
645
 
642
646
  def app
643
647
  return @app if @app
648
+
644
649
  router = RestRouter.new(endpoints)
645
650
  router.not_found = NotFoundEndpoint.new
646
651