chef-zero 4.4.2 → 4.5.0
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 +8 -6
- data/Rakefile +0 -1
- data/chef-zero.gemspec +1 -0
- data/lib/chef_zero/chef_data/acl_path.rb +2 -1
- data/lib/chef_zero/chef_data/data_normalizer.rb +1 -1
- data/lib/chef_zero/chef_data/default_creator.rb +5 -4
- data/lib/chef_zero/data_store/default_facade.rb +1 -1
- data/lib/chef_zero/endpoints/containers_endpoint.rb +12 -0
- data/lib/chef_zero/endpoints/controls_endpoint.rb +15 -0
- data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +1 -1
- data/lib/chef_zero/rest_base.rb +1 -1
- data/lib/chef_zero/server.rb +2 -0
- data/lib/chef_zero/version.rb +1 -1
- data/spec/run_oc_pedant.rb +31 -15
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cc5716f0bde147efc79fb02be61275ea01aa654
|
4
|
+
data.tar.gz: d1a2c69275d9a2bc901f5024f47be5b821320e98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0c7757da8314dad7ff5f58fe4423c7ee816b32138f59b16fcf9073e8b8fffc045b819781e81e119f85c553d44b6336e678c37d8aed0d729aae3f54ebbc48f3f
|
7
|
+
data.tar.gz: a606ffcd42a0001e1f1a43854d9f373e15f6000a29eb52129a0b5a0298eeff28675bb6d8d4e6991c179fd4b24e0a241623f9388b0d1e733f1e1a254cb9c13272
|
data/Gemfile
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
gem 'rest-client', :github => 'chef/rest-client'
|
4
|
+
# gem 'rest-client', :github => 'chef/rest-client'
|
5
5
|
|
6
|
-
gem 'oc-chef-pedant', :github => 'chef/chef-server'
|
7
|
-
|
8
|
-
# gem 'oc-chef-pedant', :path => "../chef-server"
|
6
|
+
gem 'oc-chef-pedant', :github => 'chef/chef-server', :branch => "jk/authorization-tags"
|
9
7
|
|
10
8
|
# bundler resolve failure on "rspec_junit_formatter"
|
11
9
|
# gem 'chef-pedant', :github => 'opscode/chef-pedant', :ref => "server-cli-option"
|
12
10
|
|
13
|
-
gem 'chef', :github => 'chef/chef'
|
14
|
-
|
11
|
+
# gem 'chef', :github => 'chef/chef', :branch => 'jk/policies-acls'
|
12
|
+
|
13
|
+
if ENV['GEMFILE_MOD']
|
14
|
+
puts "GEMFILE_MOD: #{ENV['GEMFILE_MOD']}"
|
15
|
+
instance_eval(ENV['GEMFILE_MOD'])
|
16
|
+
end
|
data/Rakefile
CHANGED
@@ -45,7 +45,6 @@ end
|
|
45
45
|
require 'github_changelog_generator/task'
|
46
46
|
|
47
47
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
48
|
-
config.token = ENV['GITHUB_CHANGELOG_TOKEN']
|
49
48
|
# config.future_release = ChefZero::VERSION
|
50
49
|
config.enhancement_labels = "enhancement,Enhancement,New Feature".split(',')
|
51
50
|
config.bug_labels = "bug,Bug,Improvement,Upstream Bug".split(',')
|
data/chef-zero.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency 'rake'
|
25
25
|
s.add_development_dependency 'rspec'
|
26
26
|
s.add_development_dependency 'github_changelog_generator'
|
27
|
+
s.add_development_dependency 'chef'
|
27
28
|
|
28
29
|
s.bindir = 'bin'
|
29
30
|
s.executables = ['chef-zero']
|
@@ -13,7 +13,8 @@ module ChefZero
|
|
13
13
|
# specified on X, they are not inherited from X's parent
|
14
14
|
# - stop adding pivotal to acls (he already has access to what he needs)
|
15
15
|
module AclPath
|
16
|
-
ORG_DATA_TYPES = %w(clients cookbooks containers data environments groups
|
16
|
+
ORG_DATA_TYPES = %w(clients cookbook_artifacts cookbooks containers data environments groups
|
17
|
+
nodes policies policy_groups roles sandboxes)
|
17
18
|
TOP_DATA_TYPES = %w(containers organizations users)
|
18
19
|
|
19
20
|
# ACL data paths for a partition are:
|
@@ -8,7 +8,7 @@ module ChefZero
|
|
8
8
|
def self.normalize_acls(acls)
|
9
9
|
ChefData::DefaultCreator::PERMISSIONS.each do |perm|
|
10
10
|
acls[perm] ||= {}
|
11
|
-
acls[perm]['actors'] ||= []
|
11
|
+
(acls[perm]['actors'] ||= []).uniq! # this gets doubled sometimes, for reasons.
|
12
12
|
acls[perm]['groups'] ||= []
|
13
13
|
end
|
14
14
|
acls
|
@@ -148,6 +148,7 @@ module ChefZero
|
|
148
148
|
|
149
149
|
DEFAULT_ORG_SPINE = {
|
150
150
|
'clients' => {},
|
151
|
+
'cookbook_artifacts' => {},
|
151
152
|
'cookbooks' => {},
|
152
153
|
'data' => {},
|
153
154
|
'environments' => %w(_default),
|
@@ -162,7 +163,7 @@ module ChefZero
|
|
162
163
|
'users' => {},
|
163
164
|
|
164
165
|
'org' => {},
|
165
|
-
'containers' => %w(clients containers cookbooks data environments groups nodes roles sandboxes
|
166
|
+
'containers' => %w(clients containers cookbook_artifacts cookbooks data environments groups nodes policies policy_groups roles sandboxes),
|
166
167
|
'groups' => %w(admins billing-admins clients users),
|
167
168
|
'association_requests' => {}
|
168
169
|
}
|
@@ -281,7 +282,7 @@ module ChefZero
|
|
281
282
|
'delete' => { 'groups' => %w(admins) },
|
282
283
|
'grant' => { 'groups' => %w(admins) },
|
283
284
|
}
|
284
|
-
when 'containers/
|
285
|
+
when 'containers/environments', 'containers/roles', 'containers/policy_groups', 'containers/policies'
|
285
286
|
{
|
286
287
|
'create' => { 'groups' => %w(admins users) },
|
287
288
|
'read' => { 'groups' => %w(admins users clients) },
|
@@ -289,7 +290,7 @@ module ChefZero
|
|
289
290
|
'delete' => { 'groups' => %w(admins users) },
|
290
291
|
'grant' => { 'groups' => %w(admins) },
|
291
292
|
}
|
292
|
-
when 'containers/cookbooks', 'containers/data'
|
293
|
+
when 'containers/cookbooks', 'containers/cookbook_artifacts', 'containers/data'
|
293
294
|
{
|
294
295
|
'create' => { 'groups' => %w(admins users clients) },
|
295
296
|
'read' => { 'groups' => %w(admins users clients) },
|
@@ -439,7 +440,7 @@ module ChefZero
|
|
439
440
|
when 4
|
440
441
|
return path[0] == 'organizations' && (
|
441
442
|
(path[2] == 'acls' && path[1] != 'root') ||
|
442
|
-
%w(cookbooks data).include?(path[2]))
|
443
|
+
%w(cookbooks cookbook_artifacts data policies policy_groups).include?(path[2]))
|
443
444
|
else
|
444
445
|
return false
|
445
446
|
end
|
@@ -62,7 +62,7 @@ module ChefZero
|
|
62
62
|
end
|
63
63
|
|
64
64
|
options_hash = options.last.is_a?(Hash) ? options.last : {}
|
65
|
-
default_creator.created(path + [ name ], options_hash[:requestor], options.include?(:
|
65
|
+
default_creator.created(path + [ name ], options_hash[:requestor], options.include?(:create_dir))
|
66
66
|
end
|
67
67
|
|
68
68
|
def get(path, request=nil)
|
@@ -8,6 +8,18 @@ module ChefZero
|
|
8
8
|
def initialize(server)
|
9
9
|
super(server, %w(id containername))
|
10
10
|
end
|
11
|
+
|
12
|
+
# create a container.
|
13
|
+
# input: {"containername"=>"new-container", "containerpath"=>"/"}
|
14
|
+
def post(request)
|
15
|
+
data = parse_json(request.body)
|
16
|
+
# if they don't match, id wins.
|
17
|
+
container_name = data["id"] || data["containername"]
|
18
|
+
container_path_suffix = data["containerpath"].split("/").reject { |o| o.empty? }
|
19
|
+
create_data(request, request.rest_path, container_name, to_json({}), :create_dir)
|
20
|
+
|
21
|
+
json_response(201, { uri: build_uri(request.base_uri, request.rest_path + container_path_suffix + [container_name]) })
|
22
|
+
end
|
11
23
|
end
|
12
24
|
end
|
13
25
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ChefZero
|
2
|
+
module Endpoints
|
3
|
+
# /organizations/ORG/controls
|
4
|
+
class ControlsEndpoint < RestBase
|
5
|
+
# ours is not to wonder why; ours is but to make the pedant specs pass.
|
6
|
+
def get(request)
|
7
|
+
error(410, "Server says 410, chef-zero says 410.")
|
8
|
+
end
|
9
|
+
|
10
|
+
def post(request)
|
11
|
+
error(410, "Server says 410, chef-zero says 410.")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -56,7 +56,7 @@ module ChefZero
|
|
56
56
|
# group.
|
57
57
|
# Storage: /organizations/ORG/policies/POLICY/revisions/REVISION
|
58
58
|
response_code = exists_data?(request) ? 200 : 201
|
59
|
-
set_data(request, nil, to_json(revision_id), :create_dir)
|
59
|
+
set_data(request, nil, to_json(revision_id), :create, :create_dir)
|
60
60
|
|
61
61
|
already_json_response(response_code, request.body)
|
62
62
|
end
|
data/lib/chef_zero/rest_base.rb
CHANGED
@@ -200,7 +200,7 @@ module ChefZero
|
|
200
200
|
end
|
201
201
|
|
202
202
|
def json_response(response_code, json, request_version=0, response_version=0, opts={pretty: true})
|
203
|
-
do_pretty_json = opts[:pretty]
|
203
|
+
do_pretty_json = !!opts[:pretty] # make sure we have a proper Boolean.
|
204
204
|
already_json_response(response_code, FFI_Yajl::Encoder.encode(json, :pretty => do_pretty_json), request_version, response_version)
|
205
205
|
end
|
206
206
|
|
data/lib/chef_zero/server.rb
CHANGED
@@ -50,6 +50,7 @@ require 'chef_zero/endpoints/cookbook_artifact_endpoint'
|
|
50
50
|
require 'chef_zero/endpoints/cookbook_artifact_identifier_endpoint'
|
51
51
|
require 'chef_zero/endpoints/containers_endpoint'
|
52
52
|
require 'chef_zero/endpoints/container_endpoint'
|
53
|
+
require 'chef_zero/endpoints/controls_endpoint'
|
53
54
|
require 'chef_zero/endpoints/dummy_endpoint'
|
54
55
|
require 'chef_zero/endpoints/data_bags_endpoint'
|
55
56
|
require 'chef_zero/endpoints/data_bag_endpoint'
|
@@ -563,6 +564,7 @@ module ChefZero
|
|
563
564
|
[ "/dummy", DummyEndpoint.new(self) ],
|
564
565
|
[ "/organizations/*/clients", ActorsEndpoint.new(self) ],
|
565
566
|
[ "/organizations/*/clients/*", ActorEndpoint.new(self) ],
|
567
|
+
[ "/organizations/*/controls", ControlsEndpoint.new(self) ],
|
566
568
|
[ "/organizations/*/cookbooks", CookbooksEndpoint.new(self) ],
|
567
569
|
[ "/organizations/*/cookbooks/*", CookbookEndpoint.new(self) ],
|
568
570
|
[ "/organizations/*/cookbooks/*/*", CookbookVersionEndpoint.new(self) ],
|
data/lib/chef_zero/version.rb
CHANGED
data/spec/run_oc_pedant.rb
CHANGED
@@ -84,21 +84,27 @@ begin
|
|
84
84
|
'--skip-organizations',
|
85
85
|
'--skip-multiuser',
|
86
86
|
|
87
|
-
#
|
88
|
-
|
89
|
-
|
87
|
+
# chef-zero has some non-removable quirks, such as the fact that files
|
88
|
+
# with 255-character names cannot be stored in local mode. This is
|
89
|
+
# reserved only for quirks that are *irrevocable* and by design; and
|
90
|
+
# should barely be used at all.
|
91
|
+
'--skip-chef-zero-quirks',
|
90
92
|
]
|
91
93
|
else
|
92
94
|
[]
|
93
95
|
end
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
96
|
+
# The latest released Chef doesn't do ACLs, Cookbook Artifacts or Policies yet
|
97
|
+
chef_fs_skips << '--skip-acl'
|
98
|
+
chef_fs_skips << '--skip-cookbook-artifacts'
|
99
|
+
chef_fs_skips << '--skip-policies'
|
100
|
+
|
101
|
+
# These things aren't supported by Chef Zero in any mode of operation:
|
102
|
+
default_skips = [
|
103
|
+
# "the goal is that only authorization, authentication and validation tests
|
104
|
+
# are turned off" - @jkeiser
|
105
|
+
#
|
106
|
+
# ...but we're not there yet
|
98
107
|
'--skip-keys',
|
99
|
-
'--skip-controls',
|
100
|
-
'--skip-acl',
|
101
|
-
'--skip-headers',
|
102
108
|
|
103
109
|
# Chef Zero does not intend to support validation the way erchef does.
|
104
110
|
'--skip-validation',
|
@@ -122,15 +128,25 @@ begin
|
|
122
128
|
'--skip-usags',
|
123
129
|
|
124
130
|
# Chef 12 features not yet 100% supported by Chef Zero
|
125
|
-
'--skip-containers',
|
126
131
|
'--skip-api-v1',
|
127
132
|
|
128
133
|
# The universe endpoint is unlikely to ever make sense for Chef Zero
|
129
|
-
'--skip-universe'
|
130
|
-
]
|
134
|
+
'--skip-universe',
|
135
|
+
]
|
136
|
+
|
137
|
+
# The knife tests are very slow and don't give us a lot of extra coverage,
|
138
|
+
# so we run them in a different entry in the travis test matrix.
|
139
|
+
pedant_args =
|
140
|
+
if ENV["PEDANT_KNIFE_TESTS"]
|
141
|
+
default_skips + %w{ --focus-knife }
|
142
|
+
else
|
143
|
+
default_skips + chef_fs_skips + %w{ --skip-knife }
|
144
|
+
end
|
145
|
+
|
146
|
+
Pedant.setup(pedant_args)
|
131
147
|
|
132
|
-
fail_fast =
|
133
|
-
#
|
148
|
+
fail_fast = %w()#--fail-fast)
|
149
|
+
#fail_fast = ["--fail-fast"]
|
134
150
|
|
135
151
|
result = RSpec::Core::Runner.run(Pedant.config.rspec_args + fail_fast)
|
136
152
|
|
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.
|
4
|
+
version: 4.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-log
|
@@ -170,6 +170,20 @@ dependencies:
|
|
170
170
|
- - ">="
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: chef
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
173
187
|
description: Self-contained, easy-setup, fast-start in-memory Chef server for testing
|
174
188
|
and solo setup purposes
|
175
189
|
email: jkeiser@opscode.com
|
@@ -207,6 +221,7 @@ files:
|
|
207
221
|
- lib/chef_zero/endpoints/authenticate_user_endpoint.rb
|
208
222
|
- lib/chef_zero/endpoints/container_endpoint.rb
|
209
223
|
- lib/chef_zero/endpoints/containers_endpoint.rb
|
224
|
+
- lib/chef_zero/endpoints/controls_endpoint.rb
|
210
225
|
- lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb
|
211
226
|
- lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb
|
212
227
|
- lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb
|
@@ -309,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
324
|
version: '0'
|
310
325
|
requirements: []
|
311
326
|
rubyforge_project:
|
312
|
-
rubygems_version: 2.5.
|
327
|
+
rubygems_version: 2.4.5.1
|
313
328
|
signing_key:
|
314
329
|
specification_version: 4
|
315
330
|
summary: Self-contained, easy-setup, fast-start in-memory Chef server for testing
|