chef-zero 15.0.17 → 15.0.21
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.
- checksums.yaml +4 -4
- data/Gemfile +36 -31
- data/LICENSE +201 -201
- data/Rakefile +73 -68
- data/bin/chef-zero +111 -111
- data/chef-zero.gemspec +34 -33
- data/lib/chef_zero/chef_data/acl_path.rb +140 -140
- data/lib/chef_zero/chef_data/cookbook_data.rb +237 -237
- data/lib/chef_zero/chef_data/data_normalizer.rb +276 -276
- data/lib/chef_zero/chef_data/default_creator.rb +476 -476
- data/lib/chef_zero/data_store/data_already_exists_error.rb +29 -29
- data/lib/chef_zero/data_store/data_error.rb +32 -32
- data/lib/chef_zero/data_store/data_not_found_error.rb +29 -29
- data/lib/chef_zero/data_store/default_facade.rb +143 -147
- data/lib/chef_zero/data_store/interface_v1.rb +67 -67
- data/lib/chef_zero/data_store/interface_v2.rb +18 -18
- data/lib/chef_zero/data_store/memory_store.rb +33 -33
- data/lib/chef_zero/data_store/memory_store_v2.rb +159 -159
- data/lib/chef_zero/data_store/raw_file_store.rb +143 -143
- data/lib/chef_zero/data_store/v1_to_v2_adapter.rb +150 -150
- data/lib/chef_zero/data_store/v2_to_v1_adapter.rb +105 -105
- data/lib/chef_zero/dist.rb +9 -9
- data/lib/chef_zero/endpoints/acl_endpoint.rb +39 -39
- data/lib/chef_zero/endpoints/acls_endpoint.rb +41 -41
- data/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +78 -78
- data/lib/chef_zero/endpoints/actor_endpoint.rb +184 -184
- data/lib/chef_zero/endpoints/actor_key_endpoint.rb +62 -62
- data/lib/chef_zero/endpoints/actor_keys_endpoint.rb +129 -129
- data/lib/chef_zero/endpoints/actors_endpoint.rb +104 -104
- data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +32 -32
- data/lib/chef_zero/endpoints/container_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/containers_endpoint.rb +25 -25
- data/lib/chef_zero/endpoints/controls_endpoint.rb +16 -16
- data/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +24 -24
- data/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +68 -68
- data/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +34 -34
- data/lib/chef_zero/endpoints/cookbook_endpoint.rb +39 -39
- data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +136 -136
- data/lib/chef_zero/endpoints/cookbooks_base.rb +80 -80
- data/lib/chef_zero/endpoints/cookbooks_endpoint.rb +19 -19
- data/lib/chef_zero/endpoints/data_bag_endpoint.rb +45 -45
- data/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +25 -25
- data/lib/chef_zero/endpoints/data_bags_endpoint.rb +23 -23
- data/lib/chef_zero/endpoints/dummy_endpoint.rb +29 -29
- data/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +24 -24
- data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +126 -126
- data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/environment_endpoint.rb +33 -33
- data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +23 -23
- data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/environment_role_endpoint.rb +36 -36
- data/lib/chef_zero/endpoints/file_store_file_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/group_endpoint.rb +20 -20
- data/lib/chef_zero/endpoints/groups_endpoint.rb +13 -13
- data/lib/chef_zero/endpoints/license_endpoint.rb +25 -25
- data/lib/chef_zero/endpoints/node_endpoint.rb +34 -34
- data/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/nodes_endpoint.rb +34 -34
- data/lib/chef_zero/endpoints/not_found_endpoint.rb +11 -11
- data/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +30 -30
- data/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +26 -26
- data/lib/chef_zero/endpoints/organization_endpoint.rb +47 -47
- data/lib/chef_zero/endpoints/organization_user_base.rb +15 -15
- data/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +16 -16
- data/lib/chef_zero/endpoints/organization_user_endpoint.rb +26 -26
- data/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +17 -17
- data/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +17 -17
- data/lib/chef_zero/endpoints/organization_users_endpoint.rb +43 -43
- data/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +20 -20
- data/lib/chef_zero/endpoints/organizations_endpoint.rb +61 -61
- data/lib/chef_zero/endpoints/policies_endpoint.rb +26 -26
- data/lib/chef_zero/endpoints/policy_endpoint.rb +24 -24
- data/lib/chef_zero/endpoints/policy_group_endpoint.rb +46 -46
- data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +83 -83
- data/lib/chef_zero/endpoints/policy_groups_endpoint.rb +38 -38
- data/lib/chef_zero/endpoints/policy_revision_endpoint.rb +66 -66
- data/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +15 -15
- data/lib/chef_zero/endpoints/principal_endpoint.rb +55 -55
- data/lib/chef_zero/endpoints/rest_list_endpoint.rb +42 -42
- data/lib/chef_zero/endpoints/rest_object_endpoint.rb +78 -78
- data/lib/chef_zero/endpoints/role_endpoint.rb +16 -16
- data/lib/chef_zero/endpoints/role_environments_endpoint.rb +14 -14
- data/lib/chef_zero/endpoints/sandbox_endpoint.rb +27 -27
- data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +51 -51
- data/lib/chef_zero/endpoints/search_endpoint.rb +208 -208
- data/lib/chef_zero/endpoints/searches_endpoint.rb +18 -18
- data/lib/chef_zero/endpoints/server_api_version_endpoint.rb +14 -14
- data/lib/chef_zero/endpoints/system_recovery_endpoint.rb +30 -30
- data/lib/chef_zero/endpoints/universe_endpoint.rb +15 -15
- data/lib/chef_zero/endpoints/user_association_request_endpoint.rb +41 -41
- data/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +19 -19
- data/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +19 -19
- data/lib/chef_zero/endpoints/user_organizations_endpoint.rb +22 -22
- data/lib/chef_zero/endpoints/version_endpoint.rb +13 -13
- data/lib/chef_zero/log.rb +7 -7
- data/lib/chef_zero/rest_base.rb +332 -332
- data/lib/chef_zero/rest_error_response.rb +11 -11
- data/lib/chef_zero/rest_request.rb +84 -88
- data/lib/chef_zero/rest_router.rb +72 -72
- data/lib/chef_zero/rspec.rb +355 -355
- data/lib/chef_zero/server.rb +730 -730
- data/lib/chef_zero/socketless_server_map.rb +92 -93
- data/lib/chef_zero/solr/query/binary_operator.rb +52 -52
- data/lib/chef_zero/solr/query/phrase.rb +23 -23
- data/lib/chef_zero/solr/query/range_query.rb +46 -46
- data/lib/chef_zero/solr/query/regexpable_query.rb +30 -30
- data/lib/chef_zero/solr/query/subquery.rb +37 -37
- data/lib/chef_zero/solr/query/term.rb +45 -45
- data/lib/chef_zero/solr/query/unary_operator.rb +41 -41
- data/lib/chef_zero/solr/solr_doc.rb +53 -53
- data/lib/chef_zero/solr/solr_parser.rb +208 -208
- data/lib/chef_zero/version.rb +3 -3
- data/lib/chef_zero.rb +10 -10
- data/spec/run_oc_pedant.rb +226 -226
- data/spec/search_spec.rb +36 -36
- data/spec/server_spec.rb +96 -96
- data/spec/socketless_server_map_spec.rb +74 -74
- data/spec/support/oc_pedant.rb +149 -149
- data/spec/support/secrets.json +6 -6
- data/spec/support/stickywicket.pem +27 -27
- metadata +35 -18
@@ -1,11 +1,11 @@
|
|
1
|
-
module ChefZero
|
2
|
-
class RestErrorResponse < StandardError
|
3
|
-
attr_reader :response_code, :error
|
4
|
-
|
5
|
-
def initialize(response_code, error)
|
6
|
-
@response_code = response_code
|
7
|
-
@error = error
|
8
|
-
super "#{response_code}: #{error}"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
module ChefZero
|
2
|
+
class RestErrorResponse < StandardError
|
3
|
+
attr_reader :response_code, :error
|
4
|
+
|
5
|
+
def initialize(response_code, error)
|
6
|
+
@response_code = response_code
|
7
|
+
@error = error
|
8
|
+
super "#{response_code}: #{error}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,88 +1,84 @@
|
|
1
|
-
require "rack/request"
|
2
|
-
require "cgi" unless defined?(CGI)
|
3
|
-
|
4
|
-
module ChefZero
|
5
|
-
class RestRequest
|
6
|
-
def initialize(env, rest_base_prefix = [])
|
7
|
-
@env = env
|
8
|
-
@rest_base_prefix = rest_base_prefix
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_reader :env
|
12
|
-
attr_accessor :rest_base_prefix
|
13
|
-
|
14
|
-
def base_uri
|
15
|
-
# Load balancer awareness
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
@base_uri
|
22
|
-
end
|
23
|
-
|
24
|
-
def
|
25
|
-
@
|
26
|
-
end
|
27
|
-
|
28
|
-
def
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
def
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
def
|
37
|
-
@env["
|
38
|
-
end
|
39
|
-
|
40
|
-
def
|
41
|
-
@env["
|
42
|
-
end
|
43
|
-
|
44
|
-
def rest_path
|
45
|
-
@rest_path
|
46
|
-
end
|
47
|
-
|
48
|
-
def
|
49
|
-
@
|
50
|
-
end
|
51
|
-
|
52
|
-
def body
|
53
|
-
@body
|
54
|
-
end
|
55
|
-
|
56
|
-
def
|
57
|
-
@
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
params
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
result <<
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
@parser ||= URI::RFC2396_Parser.new
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
1
|
+
require "rack/request"
|
2
|
+
require "cgi" unless defined?(CGI)
|
3
|
+
|
4
|
+
module ChefZero
|
5
|
+
class RestRequest
|
6
|
+
def initialize(env, rest_base_prefix = [])
|
7
|
+
@env = env
|
8
|
+
@rest_base_prefix = rest_base_prefix
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :env
|
12
|
+
attr_accessor :rest_base_prefix
|
13
|
+
|
14
|
+
def base_uri
|
15
|
+
# Load balancer awareness
|
16
|
+
scheme = env["HTTP_X_FORWARDED_PROTO"] || env["rack.url_scheme"]
|
17
|
+
@base_uri ||= "#{scheme}://#{env["HTTP_HOST"]}#{env["SCRIPT_NAME"]}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def base_uri=(value)
|
21
|
+
@base_uri = value
|
22
|
+
end
|
23
|
+
|
24
|
+
def api_version
|
25
|
+
Integer(@env["HTTP_X_OPS_SERVER_API_VERSION"] || 0)
|
26
|
+
end
|
27
|
+
|
28
|
+
def api_v0?
|
29
|
+
api_version == 0
|
30
|
+
end
|
31
|
+
|
32
|
+
def requestor
|
33
|
+
@env["HTTP_X_OPS_USERID"]
|
34
|
+
end
|
35
|
+
|
36
|
+
def method
|
37
|
+
@env["REQUEST_METHOD"]
|
38
|
+
end
|
39
|
+
|
40
|
+
def rest_path
|
41
|
+
@rest_path ||= rest_base_prefix + env["PATH_INFO"].split("/").select { |part| part != "" }
|
42
|
+
end
|
43
|
+
|
44
|
+
def rest_path=(rest_path)
|
45
|
+
@rest_path = rest_path
|
46
|
+
end
|
47
|
+
|
48
|
+
def body=(body)
|
49
|
+
@body = body
|
50
|
+
end
|
51
|
+
|
52
|
+
def body
|
53
|
+
@body ||= env["rack.input"].read
|
54
|
+
end
|
55
|
+
|
56
|
+
def query_params
|
57
|
+
@query_params ||= begin
|
58
|
+
params = Rack::Request.new(env).GET
|
59
|
+
params.keys.each do |key|
|
60
|
+
params[key] = self.class.rfc2396_parser.unescape(params[key])
|
61
|
+
end
|
62
|
+
params
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_s
|
67
|
+
result = "#{method} #{rest_path.join("/")}"
|
68
|
+
if query_params.size > 0
|
69
|
+
result << "?#{query_params.map { |k, v| "#{k}=#{v}" }.join("&")}"
|
70
|
+
end
|
71
|
+
if body.chomp != ""
|
72
|
+
result << "\n--- #{method} BODY ---\n"
|
73
|
+
result << body
|
74
|
+
result << "\n" unless body.end_with?("\n")
|
75
|
+
result << "--- END #{method} BODY ---"
|
76
|
+
end
|
77
|
+
result
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.rfc2396_parser
|
81
|
+
@parser ||= URI::RFC2396_Parser.new
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -1,72 +1,72 @@
|
|
1
|
-
require "pp" unless defined?(PP)
|
2
|
-
|
3
|
-
module ChefZero
|
4
|
-
class RestRouter
|
5
|
-
def initialize(routes)
|
6
|
-
@routes = routes.map do |route, endpoint|
|
7
|
-
if route =~ /\*\*$/
|
8
|
-
pattern = Regexp.new("^#{route[0..-3].gsub("*", "[^/]*")}")
|
9
|
-
else
|
10
|
-
pattern = Regexp.new("^#{route.gsub("*", "[^/]*")}$")
|
11
|
-
end
|
12
|
-
[ pattern, endpoint ]
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
attr_reader :routes
|
17
|
-
attr_accessor :not_found
|
18
|
-
|
19
|
-
def call(request)
|
20
|
-
log_request(request)
|
21
|
-
|
22
|
-
clean_path = "/" + request.rest_path.join("/")
|
23
|
-
|
24
|
-
find_endpoint(clean_path).call(request).tap do |response|
|
25
|
-
log_response(response)
|
26
|
-
end
|
27
|
-
rescue => ex
|
28
|
-
exception = "#{ex.inspect}\n#{ex.backtrace.join("\n")}"
|
29
|
-
|
30
|
-
ChefZero::Log.error(exception)
|
31
|
-
[ 500, { "Content-Type" => "text/plain" }, "Exception raised! #{exception}" ]
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def find_endpoint(clean_path)
|
37
|
-
_, endpoint = routes.find { |route, endpoint| route.match(clean_path) }
|
38
|
-
endpoint || not_found
|
39
|
-
end
|
40
|
-
|
41
|
-
def log_request(request)
|
42
|
-
ChefZero::Log.debug do
|
43
|
-
"#{request.method} /#{request.rest_path.join("/")}".tap do |msg|
|
44
|
-
next unless request.method =~ /^(POST|PUT)$/
|
45
|
-
|
46
|
-
if request.body.nil? || request.body.empty?
|
47
|
-
msg << " (no body)"
|
48
|
-
else
|
49
|
-
msg << [
|
50
|
-
"",
|
51
|
-
"--- #{request.method} BODY ---",
|
52
|
-
request.body.chomp,
|
53
|
-
"--- END #{request.method} BODY ---",
|
54
|
-
].join("\n")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
ChefZero::Log.debug { request.pretty_inspect }
|
60
|
-
end
|
61
|
-
|
62
|
-
def log_response(response)
|
63
|
-
ChefZero::Log.debug do
|
64
|
-
[ "",
|
65
|
-
"--- RESPONSE (#{response[0]}) ---",
|
66
|
-
response[2].chomp,
|
67
|
-
"--- END RESPONSE ---",
|
68
|
-
].join("\n")
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
1
|
+
require "pp" unless defined?(PP)
|
2
|
+
|
3
|
+
module ChefZero
|
4
|
+
class RestRouter
|
5
|
+
def initialize(routes)
|
6
|
+
@routes = routes.map do |route, endpoint|
|
7
|
+
if route =~ /\*\*$/
|
8
|
+
pattern = Regexp.new("^#{route[0..-3].gsub("*", "[^/]*")}")
|
9
|
+
else
|
10
|
+
pattern = Regexp.new("^#{route.gsub("*", "[^/]*")}$")
|
11
|
+
end
|
12
|
+
[ pattern, endpoint ]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :routes
|
17
|
+
attr_accessor :not_found
|
18
|
+
|
19
|
+
def call(request)
|
20
|
+
log_request(request)
|
21
|
+
|
22
|
+
clean_path = "/" + request.rest_path.join("/")
|
23
|
+
|
24
|
+
find_endpoint(clean_path).call(request).tap do |response|
|
25
|
+
log_response(response)
|
26
|
+
end
|
27
|
+
rescue => ex
|
28
|
+
exception = "#{ex.inspect}\n#{ex.backtrace.join("\n")}"
|
29
|
+
|
30
|
+
ChefZero::Log.error(exception)
|
31
|
+
[ 500, { "Content-Type" => "text/plain" }, "Exception raised! #{exception}" ]
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def find_endpoint(clean_path)
|
37
|
+
_, endpoint = routes.find { |route, endpoint| route.match(clean_path) }
|
38
|
+
endpoint || not_found
|
39
|
+
end
|
40
|
+
|
41
|
+
def log_request(request)
|
42
|
+
ChefZero::Log.debug do
|
43
|
+
"#{request.method} /#{request.rest_path.join("/")}".tap do |msg|
|
44
|
+
next unless request.method =~ /^(POST|PUT)$/
|
45
|
+
|
46
|
+
if request.body.nil? || request.body.empty?
|
47
|
+
msg << " (no body)"
|
48
|
+
else
|
49
|
+
msg << [
|
50
|
+
"",
|
51
|
+
"--- #{request.method} BODY ---",
|
52
|
+
request.body.chomp,
|
53
|
+
"--- END #{request.method} BODY ---",
|
54
|
+
].join("\n")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
ChefZero::Log.debug { request.pretty_inspect }
|
60
|
+
end
|
61
|
+
|
62
|
+
def log_response(response)
|
63
|
+
ChefZero::Log.debug do
|
64
|
+
[ "",
|
65
|
+
"--- RESPONSE (#{response[0]}) ---",
|
66
|
+
response[2].chomp,
|
67
|
+
"--- END RESPONSE ---",
|
68
|
+
].join("\n")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|