chef-zero 2.2 → 2.2.1
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/lib/chef_zero/cookbook_data.rb +1 -1
- data/lib/chef_zero/endpoints/actor_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/actors_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/cookbook_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +7 -7
- data/lib/chef_zero/endpoints/cookbooks_base.rb +1 -1
- data/lib/chef_zero/endpoints/data_bag_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/data_bags_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/environment_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/environment_role_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/node_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/not_found_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/principal_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/rest_list_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/rest_object_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/role_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/role_environments_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/sandbox_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/search_endpoint.rb +3 -3
- data/lib/chef_zero/rest_base.rb +1 -1
- data/lib/chef_zero/server.rb +2 -2
- data/lib/chef_zero/version.rb +1 -1
- metadata +10 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34e265dc59ee4777d6ba4efdebaaf76a64c578f4
|
4
|
+
data.tar.gz: 35725b7a8b56e88b423602d8f437b610f0e9ea7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 052d0eefadf4f57e5cdc6de67f66707f8417af32bda63dee6287616ff0e940e67b491eb8b50b2903a3bbaf98b2a85cc4f2df303218f80d5d1e03a083ab287514
|
7
|
+
data.tar.gz: 1654216d04708f136e8d84b2ead621cd1eb061f039b8d9499eac3b4c29bcf10e834790ed6c7622c37528a66f5187994b08099e1416ea591bd2f00ededc271fa6
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/data_normalizer'
|
4
4
|
|
@@ -8,7 +8,7 @@ module ChefZero
|
|
8
8
|
class ActorEndpoint < RestObjectEndpoint
|
9
9
|
def put(request)
|
10
10
|
# Find out if we're updating the public key.
|
11
|
-
request_body =
|
11
|
+
request_body = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
12
12
|
if request_body['public_key'].nil?
|
13
13
|
# If public_key is null, then don't overwrite it. Weird patchiness.
|
14
14
|
body_modified = true
|
@@ -29,7 +29,7 @@ module ChefZero
|
|
29
29
|
end
|
30
30
|
|
31
31
|
# Save request
|
32
|
-
request.body =
|
32
|
+
request.body = FFI_Yajl::Encoder.encode(request_body, :pretty => true) if body_modified
|
33
33
|
|
34
34
|
# PUT /clients is patchy
|
35
35
|
request.body = patch_request_body(request)
|
@@ -38,7 +38,7 @@ module ChefZero
|
|
38
38
|
|
39
39
|
# Inject private_key into response, delete public_key/password if applicable
|
40
40
|
if result[0] == 200 || result[0] == 201
|
41
|
-
response =
|
41
|
+
response = FFI_Yajl::Parser.parse(result[2], :create_additions => false)
|
42
42
|
response['private_key'] = private_key if private_key
|
43
43
|
response.delete('public_key') if !updating_public_key && request.rest_path[2] == 'users'
|
44
44
|
response.delete('password')
|
@@ -49,13 +49,13 @@ module ChefZero
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def populate_defaults(request, response_json)
|
52
|
-
response =
|
52
|
+
response = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
53
53
|
if request.rest_path[2] == 'clients'
|
54
54
|
response = DataNormalizer.normalize_client(response, request.rest_path[3])
|
55
55
|
else
|
56
56
|
response = DataNormalizer.normalize_user(response, request.rest_path[3])
|
57
57
|
end
|
58
|
-
|
58
|
+
FFI_Yajl::Encoder.encode(response, :pretty => true)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_list_endpoint'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -8,18 +8,18 @@ module ChefZero
|
|
8
8
|
def post(request)
|
9
9
|
# First, find out if the user actually posted a public key. If not, make
|
10
10
|
# one.
|
11
|
-
request_body =
|
11
|
+
request_body = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
12
12
|
public_key = request_body['public_key']
|
13
13
|
if !public_key
|
14
14
|
private_key, public_key = server.gen_key_pair
|
15
15
|
request_body['public_key'] = public_key
|
16
|
-
request.body =
|
16
|
+
request.body = FFI_Yajl::Encoder.encode(request_body, :pretty => true)
|
17
17
|
end
|
18
18
|
|
19
19
|
result = super(request)
|
20
20
|
if result[0] == 201
|
21
21
|
# If we generated a key, stuff it in the response.
|
22
|
-
response =
|
22
|
+
response = FFI_Yajl::Parser.parse(result[2], :create_additions => false)
|
23
23
|
response['private_key'] = private_key if private_key
|
24
24
|
response['public_key'] = public_key
|
25
25
|
json_response(201, response)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -6,12 +6,12 @@ module ChefZero
|
|
6
6
|
# /authenticate_user
|
7
7
|
class AuthenticateUserEndpoint < RestBase
|
8
8
|
def post(request)
|
9
|
-
request_json =
|
9
|
+
request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
10
10
|
name = request_json['name']
|
11
11
|
password = request_json['password']
|
12
12
|
begin
|
13
13
|
user = data_store.get(request.rest_path[0..1] + ['users', name])
|
14
|
-
verified =
|
14
|
+
verified = FFI_Yajl::Parser.parse(user, :create_additions => false)['password'] == password
|
15
15
|
rescue DataStore::DataNotFoundError
|
16
16
|
verified = false
|
17
17
|
end
|
@@ -19,7 +19,7 @@ module ChefZero
|
|
19
19
|
result = []
|
20
20
|
filter_cookbooks(all_cookbooks_list(request), {}, 1) do |name, versions|
|
21
21
|
if versions.size > 0
|
22
|
-
cookbook =
|
22
|
+
cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false)
|
23
23
|
result += recipe_names(name, cookbook)
|
24
24
|
end
|
25
25
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/rest_error_response'
|
4
4
|
require 'chef_zero/data_normalizer'
|
@@ -22,16 +22,16 @@ module ChefZero
|
|
22
22
|
|
23
23
|
# Honor frozen
|
24
24
|
if existing_cookbook
|
25
|
-
existing_cookbook_json =
|
25
|
+
existing_cookbook_json = FFI_Yajl::Parser.parse(existing_cookbook, :create_additions => false)
|
26
26
|
if existing_cookbook_json['frozen?']
|
27
27
|
if request.query_params['force'] != "true"
|
28
28
|
raise RestErrorResponse.new(409, "The cookbook #{name} at version #{version} is frozen. Use the 'force' option to override.")
|
29
29
|
end
|
30
30
|
# For some reason, you are forever unable to modify "frozen?" on a frozen cookbook.
|
31
|
-
request_body =
|
31
|
+
request_body = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
32
32
|
if !request_body['frozen?']
|
33
33
|
request_body['frozen?'] = true
|
34
|
-
request.body =
|
34
|
+
request.body = FFI_Yajl::Encoder.encode(request_body, :pretty => true)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -70,7 +70,7 @@ module ChefZero
|
|
70
70
|
|
71
71
|
def get_checksums(cookbook)
|
72
72
|
result = []
|
73
|
-
|
73
|
+
FFI_Yajl::Parser.parse(cookbook, :create_additions => false).each_pair do |key, value|
|
74
74
|
if value.is_a?(Array)
|
75
75
|
value.each do |file|
|
76
76
|
if file.is_a?(Hash) && file.has_key?('checksum')
|
@@ -104,9 +104,9 @@ module ChefZero
|
|
104
104
|
|
105
105
|
def populate_defaults(request, response_json)
|
106
106
|
# Inject URIs into each cookbook file
|
107
|
-
cookbook =
|
107
|
+
cookbook = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
108
108
|
cookbook = DataNormalizer.normalize_cookbook(self, request.rest_path[0..1], cookbook, request.rest_path[3], request.rest_path[4], request.base_uri, request.method)
|
109
|
-
|
109
|
+
FFI_Yajl::Encoder.encode(cookbook, :pretty => true)
|
110
110
|
end
|
111
111
|
|
112
112
|
def latest_version(versions)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_list_endpoint'
|
3
3
|
require 'chef_zero/endpoints/data_bag_item_endpoint'
|
4
4
|
require 'chef_zero/rest_error_response'
|
@@ -12,7 +12,7 @@ module ChefZero
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def post(request)
|
15
|
-
key =
|
15
|
+
key = FFI_Yajl::Parser.parse(request.body, :create_additions => false)[identity_key]
|
16
16
|
response = super(request)
|
17
17
|
if response[0] == 201
|
18
18
|
already_json_response(201, DataBagItemEndpoint::populate_defaults(request, request.body, request.rest_path[3], key))
|
@@ -22,7 +22,7 @@ module ChefZero
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def get_key(contents)
|
25
|
-
data_bag_item =
|
25
|
+
data_bag_item = FFI_Yajl::Parser.parse(contents, :create_additions => false)
|
26
26
|
if data_bag_item['json_class'] == 'Chef::DataBagItem' && data_bag_item['raw_data']
|
27
27
|
data_bag_item['raw_data']['id']
|
28
28
|
else
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/endpoints/data_bag_item_endpoint'
|
4
4
|
require 'chef_zero/data_normalizer'
|
@@ -16,9 +16,9 @@ module ChefZero
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.populate_defaults(request, response_json, data_bag, data_bag_item)
|
19
|
-
response =
|
19
|
+
response = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
20
20
|
response = DataNormalizer.normalize_data_bag_item(response, data_bag, data_bag_item, request.method)
|
21
|
-
|
21
|
+
FFI_Yajl::Encoder.encode(response, :pretty => true)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_list_endpoint'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -7,7 +7,7 @@ module ChefZero
|
|
7
7
|
class DataBagsEndpoint < RestListEndpoint
|
8
8
|
def post(request)
|
9
9
|
contents = request.body
|
10
|
-
name =
|
10
|
+
name = FFI_Yajl::Parser.parse(contents, :create_additions => false)[identity_key]
|
11
11
|
if name.nil?
|
12
12
|
error(400, "Must specify '#{identity_key}' in JSON")
|
13
13
|
elsif exists_data_dir?(request, request.rest_path[0..1] + ['data', name])
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/cookbooks_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -7,7 +7,7 @@ module ChefZero
|
|
7
7
|
class EnvironmentCookbookEndpoint < CookbooksBase
|
8
8
|
def get(request)
|
9
9
|
cookbook_name = request.rest_path[5]
|
10
|
-
environment =
|
10
|
+
environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false)
|
11
11
|
constraints = environment['cookbook_versions'] || {}
|
12
12
|
cookbook_versions = list_data(request, request.rest_path[0..1] + request.rest_path[4..5])
|
13
13
|
if request.query_params['num_versions'] == 'all'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
require 'chef_zero/rest_error_response'
|
4
4
|
|
@@ -12,7 +12,7 @@ module ChefZero
|
|
12
12
|
|
13
13
|
# Get the list of cookbooks and versions desired by the runlist
|
14
14
|
desired_versions = {}
|
15
|
-
run_list =
|
15
|
+
run_list = FFI_Yajl::Parser.parse(request.body, :create_additions => false)['run_list']
|
16
16
|
run_list.each do |run_list_entry|
|
17
17
|
if run_list_entry =~ /(.+)::.+\@(.+)/ || run_list_entry =~ /(.+)\@(.+)/
|
18
18
|
raise RestErrorResponse.new(412, "No such cookbook: #{$1}") if !cookbook_names.include?($1)
|
@@ -26,7 +26,7 @@ module ChefZero
|
|
26
26
|
end
|
27
27
|
|
28
28
|
# Filter by environment constraints
|
29
|
-
environment =
|
29
|
+
environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false)
|
30
30
|
environment_constraints = environment['cookbook_versions'] || {}
|
31
31
|
|
32
32
|
desired_versions.each_key do |name|
|
@@ -48,7 +48,7 @@ module ChefZero
|
|
48
48
|
|
49
49
|
result = {}
|
50
50
|
solved.each_pair do |name, versions|
|
51
|
-
cookbook =
|
51
|
+
cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false)
|
52
52
|
result[name] = DataNormalizer.normalize_cookbook(self, request.rest_path[0..1], cookbook, name, versions[0], request.base_uri, 'MIN')
|
53
53
|
end
|
54
54
|
json_response(200, result)
|
@@ -74,7 +74,7 @@ module ChefZero
|
|
74
74
|
new_unsolved = unsolved[1..-1]
|
75
75
|
|
76
76
|
# Pick this cookbook, and add dependencies
|
77
|
-
cookbook_obj =
|
77
|
+
cookbook_obj = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', solve_for, desired_version]), :create_additions => false)
|
78
78
|
cookbook_metadata = cookbook_obj['metadata'] || {}
|
79
79
|
cookbook_dependencies = cookbook_metadata['dependencies'] || {}
|
80
80
|
dep_not_found = false
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/cookbooks_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -6,7 +6,7 @@ module ChefZero
|
|
6
6
|
# /environments/NAME/cookbooks
|
7
7
|
class EnvironmentCookbooksEndpoint < CookbooksBase
|
8
8
|
def get(request)
|
9
|
-
environment =
|
9
|
+
environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false)
|
10
10
|
constraints = environment['cookbook_versions'] || {}
|
11
11
|
if request.query_params['num_versions'] == 'all'
|
12
12
|
num_versions = nil
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/data_normalizer'
|
4
4
|
|
@@ -24,9 +24,9 @@ module ChefZero
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def populate_defaults(request, response_json)
|
27
|
-
response =
|
27
|
+
response = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
28
28
|
response = DataNormalizer.normalize_environment(response, request.rest_path[3])
|
29
|
-
|
29
|
+
FFI_Yajl::Encoder.encode(response, :pretty => true)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -11,7 +11,7 @@ module ChefZero
|
|
11
11
|
|
12
12
|
result = {}
|
13
13
|
list_data(request, request.rest_path[0..1] + ['nodes']).each do |name|
|
14
|
-
node =
|
14
|
+
node = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['nodes', name]), :create_additions => false)
|
15
15
|
if node['chef_environment'] == request.rest_path[3]
|
16
16
|
result[name] = build_uri(request.base_uri, request.rest_path[0..1] + ['nodes', name])
|
17
17
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/cookbooks_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -6,12 +6,12 @@ module ChefZero
|
|
6
6
|
# /environment/NAME/recipes
|
7
7
|
class EnvironmentRecipesEndpoint < CookbooksBase
|
8
8
|
def get(request)
|
9
|
-
environment =
|
9
|
+
environment = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false)
|
10
10
|
constraints = environment['cookbook_versions'] || {}
|
11
11
|
result = []
|
12
12
|
filter_cookbooks(all_cookbooks_list(request), constraints, 1) do |name, versions|
|
13
13
|
if versions.size > 0
|
14
|
-
cookbook =
|
14
|
+
cookbook = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..1] + ['cookbooks', name, versions[0]]), :create_additions => false)
|
15
15
|
result += recipe_names(name, cookbook)
|
16
16
|
end
|
17
17
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/cookbooks_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -18,7 +18,7 @@ module ChefZero
|
|
18
18
|
# Verify that the environment exists
|
19
19
|
get_data(request, environment_path)
|
20
20
|
|
21
|
-
role =
|
21
|
+
role = FFI_Yajl::Parser.parse(get_data(request, role_path), :create_additions => false)
|
22
22
|
environment_name = environment_path[3]
|
23
23
|
if environment_name == '_default'
|
24
24
|
run_list = role['run_list']
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/data_normalizer'
|
4
4
|
|
@@ -7,9 +7,9 @@ module ChefZero
|
|
7
7
|
# /nodes/ID
|
8
8
|
class NodeEndpoint < RestObjectEndpoint
|
9
9
|
def populate_defaults(request, response_json)
|
10
|
-
node =
|
10
|
+
node = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
11
11
|
node = DataNormalizer.normalize_node(node, request.rest_path[3])
|
12
|
-
|
12
|
+
FFI_Yajl::Encoder.encode(node, :pretty => true)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
|
3
3
|
module ChefZero
|
4
4
|
module Endpoints
|
5
5
|
class NotFoundEndpoint
|
6
6
|
def call(request)
|
7
|
-
return [404, {"Content-Type" => "application/json"},
|
7
|
+
return [404, {"Content-Type" => "application/json"}, FFI_Yajl::Encoder.encode({"error" => ["Object not found: #{request.env['REQUEST_PATH']}"]}, :pretty => true)]
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero'
|
3
3
|
require 'chef_zero/rest_base'
|
4
4
|
|
@@ -19,7 +19,7 @@ module ChefZero
|
|
19
19
|
json_response(200, {
|
20
20
|
'name' => name,
|
21
21
|
'type' => type,
|
22
|
-
'public_key' =>
|
22
|
+
'public_key' => FFI_Yajl::Parser.parse(json)['public_key'] || PUBLIC_KEY
|
23
23
|
})
|
24
24
|
else
|
25
25
|
error(404, 'Principal not found')
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -33,7 +33,7 @@ module ChefZero
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def get_key(contents)
|
36
|
-
|
36
|
+
FFI_Yajl::Parser.parse(contents, :create_additions => false)[identity_key]
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
require 'chef_zero/rest_error_response'
|
4
4
|
|
@@ -20,7 +20,7 @@ module ChefZero
|
|
20
20
|
def put(request)
|
21
21
|
# We grab the old body to trigger a 404 if it doesn't exist
|
22
22
|
old_body = get_data(request)
|
23
|
-
request_json =
|
23
|
+
request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
24
24
|
key = request_json[identity_key] || request.rest_path[-1]
|
25
25
|
# If it's a rename, check for conflict and delete the old value
|
26
26
|
rename = key != request.rest_path[-1]
|
@@ -47,11 +47,11 @@ module ChefZero
|
|
47
47
|
def patch_request_body(request)
|
48
48
|
existing_value = get_data(request, nil, :nil)
|
49
49
|
if existing_value
|
50
|
-
request_json =
|
51
|
-
existing_json =
|
50
|
+
request_json = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
51
|
+
existing_json = FFI_Yajl::Parser.parse(existing_value, :create_additions => false)
|
52
52
|
merged_json = existing_json.merge(request_json)
|
53
53
|
if merged_json.size > request_json.size
|
54
|
-
return
|
54
|
+
return FFI_Yajl::Encoder.encode(merged_json, :pretty => true)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
request.body
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/data_normalizer'
|
4
4
|
|
@@ -7,9 +7,9 @@ module ChefZero
|
|
7
7
|
# /roles/NAME
|
8
8
|
class RoleEndpoint < RestObjectEndpoint
|
9
9
|
def populate_defaults(request, response_json)
|
10
|
-
role =
|
10
|
+
role = FFI_Yajl::Parser.parse(response_json, :create_additions => false)
|
11
11
|
role = DataNormalizer.normalize_role(role, request.rest_path[3])
|
12
|
-
|
12
|
+
FFI_Yajl::Encoder.encode(role, :pretty => true)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -6,7 +6,7 @@ module ChefZero
|
|
6
6
|
# /roles/NAME/environments
|
7
7
|
class RoleEnvironmentsEndpoint < RestBase
|
8
8
|
def get(request)
|
9
|
-
role =
|
9
|
+
role = FFI_Yajl::Parser.parse(get_data(request, request.rest_path[0..3]), :create_additions => false)
|
10
10
|
json_response(200, [ '_default' ] + (role['env_run_lists'].keys || []))
|
11
11
|
end
|
12
12
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'chef_zero/rest_base'
|
2
2
|
require 'chef_zero/rest_error_response'
|
3
|
-
require '
|
3
|
+
require 'ffi_yajl'
|
4
4
|
|
5
5
|
module ChefZero
|
6
6
|
module Endpoints
|
7
7
|
# /sandboxes/ID
|
8
8
|
class SandboxEndpoint < RestBase
|
9
9
|
def put(request)
|
10
|
-
existing_sandbox =
|
10
|
+
existing_sandbox = FFI_Yajl::Parser.parse(get_data(request), :create_additions => false)
|
11
11
|
existing_sandbox['checksums'].each do |checksum|
|
12
12
|
if !exists_data?(request, request.rest_path[0..1] + ['file_store', 'checksums', checksum])
|
13
13
|
raise RestErrorResponse.new(503, "Checksum not uploaded: #{checksum}")
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/rest_base'
|
3
3
|
|
4
4
|
module ChefZero
|
@@ -13,7 +13,7 @@ module ChefZero
|
|
13
13
|
def post(request)
|
14
14
|
sandbox_checksums = []
|
15
15
|
|
16
|
-
needed_checksums =
|
16
|
+
needed_checksums = FFI_Yajl::Parser.parse(request.body, :create_additions => false)['checksums']
|
17
17
|
result_checksums = {}
|
18
18
|
needed_checksums.keys.each do |needed_checksum|
|
19
19
|
if list_data(request, request.rest_path[0..1] + ['file_store', 'checksums']).include?(needed_checksum)
|
@@ -34,10 +34,10 @@ module ChefZero
|
|
34
34
|
time_str = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%S%z')
|
35
35
|
time_str = "#{time_str[0..21]}:#{time_str[22..23]}"
|
36
36
|
|
37
|
-
create_data(request, request.rest_path, id,
|
37
|
+
create_data(request, request.rest_path, id, FFI_Yajl::Encoder.encode({
|
38
38
|
:create_time => time_str,
|
39
39
|
:checksums => sandbox_checksums
|
40
|
-
}))
|
40
|
+
}, :pretty => true))
|
41
41
|
|
42
42
|
json_response(201, {
|
43
43
|
:uri => build_uri(request.base_uri, request.rest_path + [id]),
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'ffi_yajl'
|
2
2
|
require 'chef_zero/endpoints/rest_object_endpoint'
|
3
3
|
require 'chef_zero/data_normalizer'
|
4
4
|
require 'chef_zero/rest_error_response'
|
@@ -17,7 +17,7 @@ module ChefZero
|
|
17
17
|
|
18
18
|
def post(request)
|
19
19
|
full_results = search(request)
|
20
|
-
keys =
|
20
|
+
keys = FFI_Yajl::Parser.parse(request.body, :create_additions => false)
|
21
21
|
partial_results = full_results['rows'].map do |name, uri, doc, search_value|
|
22
22
|
data = {}
|
23
23
|
keys.each_pair do |key, path|
|
@@ -110,7 +110,7 @@ module ChefZero
|
|
110
110
|
result = []
|
111
111
|
list_data(request, container).each do |name|
|
112
112
|
value = get_data(request, container + [name])
|
113
|
-
expanded = expander.call(
|
113
|
+
expanded = expander.call(FFI_Yajl::Parser.parse(value, :create_additions => false), name)
|
114
114
|
result << [ name, build_uri(request.base_uri, container + [name]), expanded, expand_for_indexing(expanded, index, name) ]
|
115
115
|
end
|
116
116
|
result = result.select do |name, uri, value, search_value|
|
data/lib/chef_zero/rest_base.rb
CHANGED
@@ -112,7 +112,7 @@ module ChefZero
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def json_response(response_code, json)
|
115
|
-
already_json_response(response_code,
|
115
|
+
already_json_response(response_code, FFI_Yajl::Encoder.encode(json, :pretty => true))
|
116
116
|
end
|
117
117
|
|
118
118
|
def already_json_response(response_code, json_text)
|
data/lib/chef_zero/server.rb
CHANGED
@@ -351,7 +351,7 @@ module ChefZero
|
|
351
351
|
end
|
352
352
|
raise "No version specified" if !cookbook_data[:version]
|
353
353
|
data_store.create_dir(['organizations', org_name, 'cookbooks'], cookbook_data[:cookbook_name], :recursive)
|
354
|
-
data_store.set(['organizations', org_name, 'cookbooks', cookbook_data[:cookbook_name], cookbook_data[:version]],
|
354
|
+
data_store.set(['organizations', org_name, 'cookbooks', cookbook_data[:cookbook_name], cookbook_data[:version]], FFI_Yajl::Encoder.encode(cookbook_data, :pretty => true), :create)
|
355
355
|
cookbook_data.values.each do |files|
|
356
356
|
next unless files.is_a? Array
|
357
357
|
files.each do |file|
|
@@ -467,7 +467,7 @@ module ChefZero
|
|
467
467
|
def dejsonize_children(hash)
|
468
468
|
result = {}
|
469
469
|
hash.each_pair do |key, value|
|
470
|
-
result[key] = value.is_a?(Hash) ?
|
470
|
+
result[key] = value.is_a?(Hash) ? FFI_Yajl::Encoder.encode(value, :pretty => true) : value
|
471
471
|
end
|
472
472
|
result
|
473
473
|
end
|
data/lib/chef_zero/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-log
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ffi-yajl
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,8 +105,6 @@ files:
|
|
105
105
|
- LICENSE
|
106
106
|
- README.md
|
107
107
|
- Rakefile
|
108
|
-
- bin/chef-zero
|
109
|
-
- lib/chef_zero.rb
|
110
108
|
- lib/chef_zero/cookbook_data.rb
|
111
109
|
- lib/chef_zero/data_normalizer.rb
|
112
110
|
- lib/chef_zero/data_store/data_already_exists_error.rb
|
@@ -164,11 +162,13 @@ files:
|
|
164
162
|
- lib/chef_zero/solr/solr_doc.rb
|
165
163
|
- lib/chef_zero/solr/solr_parser.rb
|
166
164
|
- lib/chef_zero/version.rb
|
165
|
+
- lib/chef_zero.rb
|
167
166
|
- spec/run.rb
|
168
167
|
- spec/search_spec.rb
|
169
168
|
- spec/server_spec.rb
|
170
169
|
- spec/support/pedant.rb
|
171
170
|
- spec/support/stickywicket.pem
|
171
|
+
- bin/chef-zero
|
172
172
|
homepage: http://www.opscode.com
|
173
173
|
licenses:
|
174
174
|
- Apache 2.0
|
@@ -189,10 +189,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
189
|
version: '0'
|
190
190
|
requirements: []
|
191
191
|
rubyforge_project:
|
192
|
-
rubygems_version: 2.
|
192
|
+
rubygems_version: 2.1.11
|
193
193
|
signing_key:
|
194
194
|
specification_version: 4
|
195
195
|
summary: Self-contained, easy-setup, fast-start in-memory Chef server for testing
|
196
196
|
and solo setup purposes
|
197
197
|
test_files: []
|
198
|
-
has_rdoc:
|