chef-zero 14.0.13 → 14.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -6
- data/Rakefile +9 -1
- data/chef-zero.gemspec +1 -4
- data/lib/chef_zero.rb +1 -1
- data/lib/chef_zero/chef_data/cookbook_data.rb +1 -1
- data/lib/chef_zero/chef_data/data_normalizer.rb +9 -7
- data/lib/chef_zero/chef_data/default_creator.rb +8 -5
- data/lib/chef_zero/data_store/data_already_exists_error.rb +1 -1
- data/lib/chef_zero/data_store/data_error.rb +1 -1
- data/lib/chef_zero/data_store/data_not_found_error.rb +1 -1
- data/lib/chef_zero/data_store/default_facade.rb +4 -4
- data/lib/chef_zero/data_store/interface_v2.rb +1 -1
- data/lib/chef_zero/data_store/memory_store.rb +3 -3
- data/lib/chef_zero/data_store/memory_store_v2.rb +22 -14
- data/lib/chef_zero/data_store/raw_file_store.rb +6 -4
- data/lib/chef_zero/data_store/v1_to_v2_adapter.rb +11 -1
- data/lib/chef_zero/data_store/v2_to_v1_adapter.rb +1 -1
- data/lib/chef_zero/endpoints/acl_endpoint.rb +3 -2
- data/lib/chef_zero/endpoints/acls_endpoint.rb +5 -4
- data/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +2 -1
- data/lib/chef_zero/endpoints/actor_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/actor_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/actor_keys_endpoint.rb +3 -2
- data/lib/chef_zero/endpoints/actors_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +2 -1
- data/lib/chef_zero/endpoints/container_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/containers_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/controls_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +7 -5
- data/lib/chef_zero/endpoints/cookbooks_base.rb +4 -2
- data/lib/chef_zero/endpoints/cookbooks_endpoint.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 +1 -1
- data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +13 -10
- data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/environment_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/environment_role_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/file_store_file_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/group_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/groups_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/license_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/node_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/nodes_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/not_found_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +2 -1
- data/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_endpoint.rb +3 -2
- data/lib/chef_zero/endpoints/organization_user_base.rb +1 -1
- data/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_user_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_users_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organizations_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policies_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policy_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policy_group_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/policy_groups_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/policy_revision_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +1 -1
- 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 +3 -2
- data/lib/chef_zero/endpoints/role_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/role_environments_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/sandbox_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/search_endpoint.rb +8 -8
- data/lib/chef_zero/endpoints/searches_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/server_api_version_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/system_recovery_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/universe_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/user_association_request_endpoint.rb +2 -1
- data/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/user_organizations_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/version_endpoint.rb +2 -2
- data/lib/chef_zero/rest_base.rb +15 -15
- data/lib/chef_zero/rest_request.rb +4 -4
- data/lib/chef_zero/rest_router.rb +2 -2
- data/lib/chef_zero/rspec.rb +3 -2
- data/lib/chef_zero/server.rb +87 -83
- data/lib/chef_zero/socketless_server_map.rb +2 -1
- data/lib/chef_zero/solr/query/phrase.rb +2 -2
- data/lib/chef_zero/solr/query/range_query.rb +3 -3
- data/lib/chef_zero/solr/query/term.rb +1 -1
- data/lib/chef_zero/solr/solr_parser.rb +12 -10
- data/lib/chef_zero/version.rb +1 -1
- data/spec/run_oc_pedant.rb +5 -3
- data/spec/search_spec.rb +2 -2
- data/spec/socketless_server_map_spec.rb +1 -1
- data/spec/support/oc_pedant.rb +1 -1
- metadata +3 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51b6df8cfb1404572342f5012c1779ae1abf0f5dedfbe9bbe85f59f9d36830a3
|
4
|
+
data.tar.gz: 134c6eeab2b181816a7e7211392f5472d9dbf497fad9c5a3b424521f747fcda4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28d830c27a14463aee454123475caee162ff31f62bc2c9bdda6ff7628e6b1fe24af883dbcf78c64071683a51eac4492367ff68f500eb2feaea45e7c5e8583a5e
|
7
|
+
data.tar.gz: 352b9c4184dc973953dde9322bdb71f9cd54dce7f2f56acb2acbcc47edda8dc29b94fb975d9f1f87b104b49004eb5dbe026287c420d1d58f8c139b3de6a184e9
|
data/Gemfile
CHANGED
@@ -9,11 +9,13 @@ group :pedant do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
group :development, :test do
|
12
|
-
gem "chefstyle"
|
12
|
+
gem "chefstyle"
|
13
|
+
gem "rake"
|
14
|
+
gem "rspec", "~> 3.0"
|
13
15
|
end
|
14
16
|
|
15
17
|
if ENV["GEMFILE_MOD"]
|
16
|
-
puts "GEMFILE_MOD: #{ENV[
|
18
|
+
puts "GEMFILE_MOD: #{ENV["GEMFILE_MOD"]}"
|
17
19
|
instance_eval(ENV["GEMFILE_MOD"])
|
18
20
|
else
|
19
21
|
gem "chef", "~> 14.0"
|
@@ -25,7 +27,3 @@ group :debug do
|
|
25
27
|
gem "pry-byebug"
|
26
28
|
gem "pry-stack_explorer"
|
27
29
|
end
|
28
|
-
|
29
|
-
# If you want to load debugging tools into the bundle exec sandbox,
|
30
|
-
# add these additional dependencies into Gemfile.local
|
31
|
-
eval_gemfile(__FILE__ + ".local") if File.exist?(__FILE__ + ".local")
|
data/Rakefile
CHANGED
@@ -52,9 +52,17 @@ end
|
|
52
52
|
begin
|
53
53
|
require "chefstyle"
|
54
54
|
require "rubocop/rake_task"
|
55
|
+
desc "Run Chefstyle tests"
|
55
56
|
RuboCop::RakeTask.new(:style) do |task|
|
56
57
|
task.options += ["--display-cop-names", "--no-color"]
|
57
58
|
end
|
58
59
|
rescue LoadError
|
59
|
-
puts "chefstyle
|
60
|
+
puts "chefstyle gem is not installed. bundle install first to make sure all dependencies are installed."
|
61
|
+
end
|
62
|
+
|
63
|
+
begin
|
64
|
+
require "yard"
|
65
|
+
YARD::Rake::YardocTask.new(:docs)
|
66
|
+
rescue LoadError
|
67
|
+
puts "yard is not available. bundle install first to make sure all dependencies are installed."
|
60
68
|
end
|
data/chef-zero.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "https://github.com/chef/chef-zero"
|
12
12
|
s.license = "Apache-2.0"
|
13
13
|
|
14
|
-
s.required_ruby_version = ">= 2.4
|
14
|
+
s.required_ruby_version = ">= 2.4"
|
15
15
|
|
16
16
|
s.add_dependency "mixlib-log", ">= 2.0", "< 4.0"
|
17
17
|
s.add_dependency "hashie", ">= 2.0", "< 4.0"
|
@@ -19,9 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_dependency "ffi-yajl", "~> 2.2"
|
20
20
|
s.add_dependency "rack", "~> 2.0", ">= 2.0.6"
|
21
21
|
|
22
|
-
s.add_development_dependency "rake"
|
23
|
-
s.add_development_dependency "rspec"
|
24
|
-
|
25
22
|
s.bindir = "bin"
|
26
23
|
s.executables = ["chef-zero"]
|
27
24
|
s.require_path = "lib"
|
data/lib/chef_zero.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative "../../chef_zero"
|
2
|
+
require_relative "../rest_base"
|
3
|
+
require_relative "default_creator"
|
4
4
|
|
5
5
|
module ChefZero
|
6
6
|
module ChefData
|
@@ -53,7 +53,7 @@ module ChefZero
|
|
53
53
|
user["admin"] ||= false
|
54
54
|
user["admin"] = !!user["admin"]
|
55
55
|
user["openid"] ||= nil
|
56
|
-
|
56
|
+
unless osc_compat
|
57
57
|
if method == "GET"
|
58
58
|
user.delete("admin")
|
59
59
|
user.delete("password")
|
@@ -69,7 +69,7 @@ module ChefZero
|
|
69
69
|
def self.normalize_data_bag_item(data_bag_item, data_bag_name, id, method)
|
70
70
|
if method == "DELETE"
|
71
71
|
# TODO SERIOUSLY, WHO DOES THIS MANY EXCEPTIONS IN THEIR INTERFACE
|
72
|
-
|
72
|
+
unless data_bag_item["json_class"] == "Chef::DataBagItem" && data_bag_item["raw_data"]
|
73
73
|
data_bag_item["id"] ||= id
|
74
74
|
data_bag_item = { "raw_data" => data_bag_item }
|
75
75
|
data_bag_item["chef_type"] ||= "data_bag_item"
|
@@ -93,14 +93,15 @@ module ChefZero
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def self.normalize_cookbook(endpoint, org_prefix, cookbook, name, version, base_uri, method,
|
96
|
-
|
96
|
+
is_cookbook_artifact = false, api_version: 2)
|
97
97
|
# TODO I feel dirty
|
98
98
|
if method == "PUT" && api_version < 2
|
99
99
|
cookbook["all_files"] = cookbook.delete(["root_files"]) { [] }
|
100
100
|
COOKBOOK_SEGMENTS.each do |segment|
|
101
101
|
next unless cookbook.key? segment
|
102
|
+
|
102
103
|
cookbook[segment].each do |file|
|
103
|
-
file["name"] = "#{segment}/#{file[
|
104
|
+
file["name"] = "#{segment}/#{file["name"]}"
|
104
105
|
cookbook["all_files"] << file
|
105
106
|
end
|
106
107
|
cookbook.delete(segment)
|
@@ -131,6 +132,7 @@ module ChefZero
|
|
131
132
|
|
132
133
|
file.delete("full_path")
|
133
134
|
next unless COOKBOOK_SEGMENTS.include? segment
|
135
|
+
|
134
136
|
file["name"] = name
|
135
137
|
cookbook[segment] << file
|
136
138
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "acl_path"
|
2
2
|
|
3
3
|
module ChefZero
|
4
4
|
module ChefData
|
@@ -140,6 +140,7 @@ module ChefZero
|
|
140
140
|
|
141
141
|
def exists?(path)
|
142
142
|
return true if path.size == 0
|
143
|
+
|
143
144
|
parent_list = list(path[0..-2])
|
144
145
|
parent_list && parent_list.include?(path[-1])
|
145
146
|
end
|
@@ -184,7 +185,8 @@ module ChefZero
|
|
184
185
|
value = DEFAULT_ORG_SPINE
|
185
186
|
2.upto(path.size - 1) do |index|
|
186
187
|
value = nil if @deleted[path[0..index]]
|
187
|
-
break
|
188
|
+
break unless value
|
189
|
+
|
188
190
|
value = value[path[index]]
|
189
191
|
end
|
190
192
|
|
@@ -272,7 +274,8 @@ module ChefZero
|
|
272
274
|
object_path = AclPath.get_object_path(path)
|
273
275
|
# The actual things containers correspond to don't have to exist, as
|
274
276
|
# long as the container does
|
275
|
-
return nil
|
277
|
+
return nil unless data_exists?(object_path)
|
278
|
+
|
276
279
|
basic_acl =
|
277
280
|
case path[3..-1].join("/")
|
278
281
|
when "root", "containers/containers", "containers/groups"
|
@@ -350,7 +353,7 @@ module ChefZero
|
|
350
353
|
if path.size == 4 && path[0] == "organizations" && path[2] == "clients"
|
351
354
|
begin
|
352
355
|
client = FFI_Yajl::Parser.parse(data.get(path))
|
353
|
-
|
356
|
+
unless client["validator"]
|
354
357
|
unknown_owners |= [ path[3] ]
|
355
358
|
end
|
356
359
|
rescue
|
@@ -453,7 +456,7 @@ module ChefZero
|
|
453
456
|
def is_dir?(path)
|
454
457
|
case path.size
|
455
458
|
when 0, 1
|
456
|
-
|
459
|
+
true
|
457
460
|
when 2
|
458
461
|
path[0] == "organizations" || (path[0] == "acls" && path[1] != "root")
|
459
462
|
when 3
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative "interface_v2"
|
2
|
+
require_relative "../chef_data/default_creator"
|
3
3
|
|
4
4
|
module ChefZero
|
5
5
|
module DataStore
|
@@ -100,7 +100,7 @@ module ChefZero
|
|
100
100
|
begin
|
101
101
|
real_store.delete(path)
|
102
102
|
rescue DataNotFoundError
|
103
|
-
|
103
|
+
unless deleted
|
104
104
|
raise
|
105
105
|
end
|
106
106
|
end
|
@@ -111,7 +111,7 @@ module ChefZero
|
|
111
111
|
begin
|
112
112
|
real_store.delete_dir(path, *options)
|
113
113
|
rescue DataNotFoundError
|
114
|
-
|
114
|
+
unless deleted
|
115
115
|
raise
|
116
116
|
end
|
117
117
|
end
|
@@ -16,9 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "v2_to_v1_adapter"
|
20
|
+
require_relative "memory_store_v2"
|
21
|
+
require_relative "default_facade"
|
22
22
|
|
23
23
|
module ChefZero
|
24
24
|
module DataStore
|
@@ -16,9 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "data_already_exists_error"
|
20
|
+
require_relative "data_not_found_error"
|
21
|
+
require_relative "interface_v2"
|
22
22
|
|
23
23
|
module ChefZero
|
24
24
|
module DataStore
|
@@ -37,7 +37,7 @@ module ChefZero
|
|
37
37
|
parent = _get(path, options.include?(:recursive))
|
38
38
|
|
39
39
|
if parent.key?(name)
|
40
|
-
|
40
|
+
unless options.include?(:recursive)
|
41
41
|
raise DataAlreadyExistsError.new(path + [name])
|
42
42
|
end
|
43
43
|
else
|
@@ -46,7 +46,7 @@ module ChefZero
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def create(path, name, data, *options)
|
49
|
-
|
49
|
+
unless data.is_a?(String)
|
50
50
|
raise "set only works with strings (given data: #{data.inspect})"
|
51
51
|
end
|
52
52
|
|
@@ -55,19 +55,21 @@ module ChefZero
|
|
55
55
|
if parent.key?(name)
|
56
56
|
raise DataAlreadyExistsError.new(path + [name])
|
57
57
|
end
|
58
|
+
|
58
59
|
parent[name] = data
|
59
60
|
end
|
60
61
|
|
61
62
|
def get(path, request = nil)
|
62
63
|
value = _get(path)
|
63
64
|
if value.is_a?(Hash)
|
64
|
-
raise "get() called on directory #{path.join(
|
65
|
+
raise "get() called on directory #{path.join("/")}"
|
65
66
|
end
|
67
|
+
|
66
68
|
value
|
67
69
|
end
|
68
70
|
|
69
71
|
def set(path, data, *options)
|
70
|
-
|
72
|
+
unless data.is_a?(String)
|
71
73
|
raise "set only works with strings: #{path} = #{data.inspect}"
|
72
74
|
end
|
73
75
|
|
@@ -77,36 +79,40 @@ module ChefZero
|
|
77
79
|
if !options.include?(:create) && !parent[path[-1]]
|
78
80
|
raise DataNotFoundError.new(path)
|
79
81
|
end
|
82
|
+
|
80
83
|
parent[path[-1]] = data
|
81
84
|
end
|
82
85
|
|
83
86
|
def delete(path)
|
84
87
|
parent = _get(path[0, path.length - 1])
|
85
|
-
|
88
|
+
unless parent.key?(path[-1])
|
86
89
|
raise DataNotFoundError.new(path)
|
87
90
|
end
|
88
|
-
|
91
|
+
unless parent[path[-1]].is_a?(String)
|
89
92
|
raise "delete only works with strings: #{path}"
|
90
93
|
end
|
94
|
+
|
91
95
|
parent.delete(path[-1])
|
92
96
|
end
|
93
97
|
|
94
98
|
def delete_dir(path, *options)
|
95
99
|
parent = _get(path[0, path.length - 1])
|
96
|
-
|
100
|
+
unless parent.key?(path[-1])
|
97
101
|
raise DataNotFoundError.new(path)
|
98
102
|
end
|
99
|
-
|
103
|
+
unless parent[path[-1]].is_a?(Hash)
|
100
104
|
raise "delete_dir only works with directories: #{path}"
|
101
105
|
end
|
106
|
+
|
102
107
|
parent.delete(path[-1])
|
103
108
|
end
|
104
109
|
|
105
110
|
def list(path)
|
106
111
|
dir = _get(path)
|
107
|
-
|
112
|
+
unless dir.is_a? Hash
|
108
113
|
raise "list only works with directories (#{path} = #{dir.class})"
|
109
114
|
end
|
115
|
+
|
110
116
|
dir.keys.sort
|
111
117
|
end
|
112
118
|
|
@@ -115,6 +121,7 @@ module ChefZero
|
|
115
121
|
if value.is_a?(Hash) && !options[:allow_dirs]
|
116
122
|
raise "exists? does not work with directories (#{path} = #{value.class})"
|
117
123
|
end
|
124
|
+
|
118
125
|
true
|
119
126
|
rescue DataNotFoundError
|
120
127
|
false
|
@@ -122,9 +129,10 @@ module ChefZero
|
|
122
129
|
|
123
130
|
def exists_dir?(path)
|
124
131
|
dir = _get(path)
|
125
|
-
|
132
|
+
unless dir.is_a? Hash
|
126
133
|
raise "exists_dir? only works with directories (#{path} = #{dir.class})"
|
127
134
|
end
|
135
|
+
|
128
136
|
true
|
129
137
|
rescue DataNotFoundError
|
130
138
|
false
|
@@ -135,7 +143,7 @@ module ChefZero
|
|
135
143
|
def _get(path, create_dir = false)
|
136
144
|
value = @data
|
137
145
|
path.each_with_index do |path_part, index|
|
138
|
-
|
146
|
+
unless value.key?(path_part)
|
139
147
|
if create_dir
|
140
148
|
value[path_part] = {}
|
141
149
|
else
|
@@ -16,9 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "data_already_exists_error"
|
20
|
+
require_relative "data_not_found_error"
|
21
|
+
require_relative "interface_v2"
|
22
22
|
require "fileutils"
|
23
23
|
|
24
24
|
module ChefZero
|
@@ -44,6 +44,7 @@ module ChefZero
|
|
44
44
|
if destructible
|
45
45
|
Dir.entries(root).each do |entry|
|
46
46
|
next if entry == "." || entry == ".."
|
47
|
+
|
47
48
|
FileUtils.rm_rf(Path.join(root, entry))
|
48
49
|
end
|
49
50
|
end
|
@@ -110,9 +111,10 @@ module ChefZero
|
|
110
111
|
|
111
112
|
def delete_dir(path, *options)
|
112
113
|
if options.include?(:recursive)
|
113
|
-
|
114
|
+
unless File.exist?(path_to(path))
|
114
115
|
raise DataNotFoundError.new(path)
|
115
116
|
end
|
117
|
+
|
116
118
|
FileUtils.rm_rf(path_to(path))
|
117
119
|
else
|
118
120
|
begin
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "interface_v2"
|
2
2
|
|
3
3
|
module ChefZero
|
4
4
|
module DataStore
|
@@ -21,6 +21,7 @@ module ChefZero
|
|
21
21
|
raise DataNotFoundError.new(path) if skip_organizations?(path)
|
22
22
|
raise "Cannot create #{name} at #{path} with V1ToV2Adapter: only handles a single org named #{single_org}." if skip_organizations?(path, name)
|
23
23
|
raise DataAlreadyExistsError.new(path + [ name ]) if path.size < 2
|
24
|
+
|
24
25
|
fix_exceptions do
|
25
26
|
real_store.create_dir(path[2..-1], name, *options)
|
26
27
|
end
|
@@ -30,6 +31,7 @@ module ChefZero
|
|
30
31
|
raise DataNotFoundError.new(path) if skip_organizations?(path)
|
31
32
|
raise "Cannot create #{name} at #{path} with V1ToV2Adapter: only handles a single org named #{single_org}." if skip_organizations?(path, name)
|
32
33
|
raise DataAlreadyExistsError.new(path + [ name ]) if path.size < 2
|
34
|
+
|
33
35
|
fix_exceptions do
|
34
36
|
real_store.create(path[2..-1], name, data, *options)
|
35
37
|
end
|
@@ -37,6 +39,7 @@ module ChefZero
|
|
37
39
|
|
38
40
|
def get(path, request = nil)
|
39
41
|
raise DataNotFoundError.new(path) if skip_organizations?(path)
|
42
|
+
|
40
43
|
fix_exceptions do
|
41
44
|
# Make it so build_uri will include /organizations/ORG inside the V1 data store
|
42
45
|
if request && request.rest_base_prefix.size == 0
|
@@ -53,6 +56,7 @@ module ChefZero
|
|
53
56
|
|
54
57
|
def set(path, data, *options)
|
55
58
|
raise DataNotFoundError.new(path) if skip_organizations?(path)
|
59
|
+
|
56
60
|
fix_exceptions do
|
57
61
|
real_store.set(path[2..-1], data, *options)
|
58
62
|
end
|
@@ -60,6 +64,7 @@ module ChefZero
|
|
60
64
|
|
61
65
|
def delete(path, *options)
|
62
66
|
raise DataNotFoundError.new(path) if skip_organizations?(path) && !options.include?(:recursive)
|
67
|
+
|
63
68
|
fix_exceptions do
|
64
69
|
real_store.delete(path[2..-1])
|
65
70
|
end
|
@@ -67,6 +72,7 @@ module ChefZero
|
|
67
72
|
|
68
73
|
def delete_dir(path, *options)
|
69
74
|
raise DataNotFoundError.new(path) if skip_organizations?(path) && !options.include?(:recursive)
|
75
|
+
|
70
76
|
fix_exceptions do
|
71
77
|
real_store.delete_dir(path[2..-1], *options)
|
72
78
|
end
|
@@ -74,6 +80,7 @@ module ChefZero
|
|
74
80
|
|
75
81
|
def list(path)
|
76
82
|
raise DataNotFoundError.new(path) if skip_organizations?(path)
|
83
|
+
|
77
84
|
if path == []
|
78
85
|
[ "organizations" ]
|
79
86
|
elsif path == [ "organizations" ]
|
@@ -87,6 +94,7 @@ module ChefZero
|
|
87
94
|
|
88
95
|
def exists?(path)
|
89
96
|
return false if skip_organizations?(path)
|
97
|
+
|
90
98
|
fix_exceptions do
|
91
99
|
real_store.exists?(path[2..-1])
|
92
100
|
end
|
@@ -94,12 +102,14 @@ module ChefZero
|
|
94
102
|
|
95
103
|
def exists_dir?(path)
|
96
104
|
return false if skip_organizations?(path)
|
105
|
+
|
97
106
|
if path == []
|
98
107
|
true
|
99
108
|
elsif path == [ "organizations" ] || path == [ "users" ]
|
100
109
|
true
|
101
110
|
else
|
102
111
|
return false if skip_organizations?(path)
|
112
|
+
|
103
113
|
fix_exceptions do
|
104
114
|
real_store.exists_dir?(path[2..-1])
|
105
115
|
end
|