chef-server-api 0.10.4 → 0.10.6.beta.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.
- data/app/controllers/clients.rb +7 -7
- data/app/controllers/cookbooks.rb +6 -3
- data/app/controllers/sandboxes.rb +5 -2
- data/lib/chef-server-api/version.rb +1 -1
- data/spec/spec_model_helper.rb +16 -0
- data/spec/unit/cookbooks_controller_spec.rb +32 -1
- data/spec/unit/environments_controller_spec.rb +23 -16
- data/spec/unit/nodes_controller_environments_spec.rb +11 -7
- metadata +62 -133
data/app/controllers/clients.rb
CHANGED
@@ -49,13 +49,13 @@ class Clients < Application
|
|
49
49
|
exists = true
|
50
50
|
if params.has_key?(:inflated_object)
|
51
51
|
params[:name] ||= params[:inflated_object].name
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
params[:admin] ||= params[:inflated_object].admin
|
53
|
+
end
|
54
|
+
|
55
|
+
# We can only create clients if we're the admin or the validator.
|
56
|
+
# But only allow creating admin clients if we're already an admin.
|
57
|
+
if params[:admin] == true && @auth_user.admin != true
|
58
|
+
raise Forbidden, "You are not allowed to take this action."
|
59
59
|
end
|
60
60
|
|
61
61
|
begin
|
@@ -139,10 +139,13 @@ class Cookbooks < Application
|
|
139
139
|
checksum = params[:checksum]
|
140
140
|
raise NotFound, "Cookbook #{cookbook_name} version #{cookbook_version} does not contain a file with checksum #{checksum}" unless cookbook.checksums.keys.include?(checksum)
|
141
141
|
|
142
|
-
|
143
|
-
|
142
|
+
begin
|
143
|
+
filename = Chef::Checksum.new(checksum).storage.file_location
|
144
144
|
|
145
|
-
|
145
|
+
send_file(filename)
|
146
|
+
rescue Errno::ENOENT => e
|
147
|
+
raise InternalServerError, "File with checksum #{checksum} not found in the repository (this should not happen)"
|
148
|
+
end
|
146
149
|
end
|
147
150
|
|
148
151
|
def update
|
@@ -103,9 +103,12 @@ class Sandboxes < Application
|
|
103
103
|
def update
|
104
104
|
# look up the sandbox by its guid
|
105
105
|
existing_sandbox = Chef::Sandbox.cdb_load(params[:sandbox_id])
|
106
|
-
raise NotFound, "cannot find sandbox with guid #{sandbox_id}" unless existing_sandbox
|
106
|
+
raise NotFound, "cannot find sandbox with guid #{params[:sandbox_id]}" unless existing_sandbox
|
107
107
|
|
108
|
-
|
108
|
+
if existing_sandbox.is_completed
|
109
|
+
Chef::Log.warn("Sandbox finalization: #{params[:sandbox_id]} is already complete, ignoring")
|
110
|
+
return display(existing_sandbox)
|
111
|
+
end
|
109
112
|
|
110
113
|
if params[:is_completed]
|
111
114
|
existing_sandbox.is_completed = (params[:is_completed] == true)
|
data/spec/spec_model_helper.rb
CHANGED
@@ -53,6 +53,22 @@ def make_runlist(*items)
|
|
53
53
|
res
|
54
54
|
end
|
55
55
|
|
56
|
+
def stub_checksum(checksum, present = true)
|
57
|
+
Chef::Checksum.should_receive(:new).with(checksum).and_return do
|
58
|
+
obj = stub(Chef::Checksum)
|
59
|
+
obj.should_receive(:storage).and_return do
|
60
|
+
storage = stub("storage")
|
61
|
+
if present
|
62
|
+
storage.should_receive(:file_location).and_return("/var/chef/checksums/#{checksum[0..1]}/#{checksum}")
|
63
|
+
else
|
64
|
+
storage.should_receive(:file_location).and_raise(Errno::ENOENT)
|
65
|
+
end
|
66
|
+
storage
|
67
|
+
end
|
68
|
+
obj
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
56
72
|
# Take an Array of cookbook_versions,
|
57
73
|
# And return a hash like:
|
58
74
|
# {
|
@@ -21,7 +21,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_model_helper')
|
|
21
21
|
require 'chef/node'
|
22
22
|
require 'pp'
|
23
23
|
|
24
|
-
describe "
|
24
|
+
describe "Cookbooks Controller" do
|
25
25
|
before do
|
26
26
|
Merb.logger.set_log(StringIO.new)
|
27
27
|
end
|
@@ -51,6 +51,37 @@ describe "Coobkooks Controller" do
|
|
51
51
|
expected['cookbook-a'] = {"url" => "#{root_url}/cookbooks/cookbook-a", "versions" => expected_cookbook_a_data}
|
52
52
|
get_json('/cookbooks/cookbook-a').should == expected
|
53
53
|
end
|
54
|
+
|
55
|
+
it "downloads a file from a cookbook" do
|
56
|
+
cookbook = make_cookbook("cookbook-a", "2.0.3")
|
57
|
+
cookbook.checksums["1234"] = nil
|
58
|
+
stub_checksum("1234")
|
59
|
+
Chef::CookbookVersion.should_receive(:cdb_load).with("cookbook-a", "2.0.3").and_return(cookbook)
|
60
|
+
expected = {}
|
61
|
+
expected_cookbook_a_data = @cookbook_a_versions.map {|v| {"url" => "#{root_url}/cookbooks/cookbook-a/#{v}", "version" => v}}.reverse
|
62
|
+
expected['cookbook-a'] = {"url" => "#{root_url}/cookbooks/cookbook-a", "versions" => expected_cookbook_a_data}
|
63
|
+
response = get("/cookbooks/cookbook-a/2.0.3/files/1234") do |controller|
|
64
|
+
stub_authentication(controller)
|
65
|
+
controller.should_receive(:send_file).with("/var/chef/checksums/12/1234").and_return("file-content")
|
66
|
+
end
|
67
|
+
response.status.should == 200
|
68
|
+
response.body.should == "file-content"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "gets an error in case of missing file on download" do
|
72
|
+
cookbook = make_cookbook("cookbook-a", "2.0.3")
|
73
|
+
cookbook.checksums["1234"] = nil
|
74
|
+
stub_checksum("1234", false)
|
75
|
+
Chef::CookbookVersion.should_receive(:cdb_load).with("cookbook-a", "2.0.3").and_return(cookbook)
|
76
|
+
expected = {}
|
77
|
+
expected_cookbook_a_data = @cookbook_a_versions.map {|v| {"url" => "#{root_url}/cookbooks/cookbook-a/#{v}", "version" => v}}.reverse
|
78
|
+
expected['cookbook-a'] = {"url" => "#{root_url}/cookbooks/cookbook-a", "versions" => expected_cookbook_a_data}
|
79
|
+
lambda do
|
80
|
+
response = get("/cookbooks/cookbook-a/2.0.3/files/1234") do |controller|
|
81
|
+
stub_authentication(controller)
|
82
|
+
end
|
83
|
+
end.should raise_error(Merb::ControllerExceptions::InternalServerError, /File with checksum 1234 not found in the repository/)
|
84
|
+
end
|
54
85
|
end
|
55
86
|
|
56
87
|
describe "when handling requests from 0.9 clients" do
|
@@ -27,17 +27,21 @@ describe "Environments controller" do
|
|
27
27
|
|
28
28
|
@env1 = make_environment("env1")
|
29
29
|
|
30
|
-
@
|
31
|
-
|
30
|
+
@cookbook1_v1 = make_cookbook("cookbook1", "1.0.0")
|
31
|
+
@cookbook2_v1 = make_cookbook("cookbook2", "1.0.0")
|
32
|
+
@filtered_cookbook_list_env1 = make_filtered_cookbook_hash(@cookbook1_v1, @cookbook2_v1)
|
32
33
|
@filtered_cookbook_list_env1["cookbook_noversions"] = Array.new
|
33
34
|
|
34
|
-
@
|
35
|
-
|
35
|
+
@cookbook1_v2 = make_cookbook("cookbook1", "2.0.0")
|
36
|
+
@cookbook2_v2 = make_cookbook("cookbook2", "2.0.0")
|
37
|
+
@filtered_cookbook_list_env2 = make_filtered_cookbook_hash(@cookbook1_v2, @cookbook2_v2)
|
36
38
|
|
37
|
-
@
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
@cookbook1_v3 = make_cookbook("cookbook1", "3.0.0")
|
40
|
+
@cookbook1_v4 = make_cookbook("cookbook1", "4.0.0")
|
41
|
+
@filtered_cookbook_list_env_many_versions = make_filtered_cookbook_hash(@cookbook1_v1,
|
42
|
+
@cookbook1_v2,
|
43
|
+
@cookbook1_v3,
|
44
|
+
@cookbook1_v4)
|
41
45
|
|
42
46
|
@cookbook_deps_on_nosuch = make_cookbook("cookbook_deps_on_nosuch", "1.0.0")
|
43
47
|
@cookbook_deps_on_nosuch.metadata.depends("cookbook_nosuch")
|
@@ -48,10 +52,10 @@ describe "Environments controller" do
|
|
48
52
|
|
49
53
|
describe "when handling Environments API calls" do
|
50
54
|
it "should expand the passed-in run_list using the correct environment: one run_list item" do
|
51
|
-
|
52
55
|
# Env1 pins both versions at 1.0.0. Expect only the one we ask for, cookbook1,
|
53
56
|
# back in the result.
|
54
|
-
Chef::Environment.should_receive(:
|
57
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
|
58
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cookbook1_v1], nil).and_return([@cookbook1_v1])
|
55
59
|
response = post_json("/environments/env1/cookbook_versions", {"run_list" => ["recipe[cookbook1]"]})
|
56
60
|
response.should be_kind_of(Hash)
|
57
61
|
response.keys.size.should == 1
|
@@ -62,7 +66,8 @@ describe "Environments controller" do
|
|
62
66
|
it "should expect the passed-in run_list using the correct environment: two run_list items" do
|
63
67
|
# Ask for both cookbook1 and cookbook2 back. Expect version 2.0.0 for
|
64
68
|
# each, as those are what's appropriate for the environment.
|
65
|
-
Chef::Environment.should_receive(:
|
69
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env2", nil).and_return(@filtered_cookbook_list_env2)
|
70
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cookbook2_v2, @cookbook1_v2], nil).and_return([@cookbook2_v2, @cookbook1_v2])
|
66
71
|
response = post_json("/environments/env2/cookbook_versions", {"run_list" => ["recipe[cookbook2]", "recipe[cookbook1]"]})
|
67
72
|
response.should be_kind_of(Hash)
|
68
73
|
response.keys.size.should == 2
|
@@ -73,7 +78,8 @@ describe "Environments controller" do
|
|
73
78
|
end
|
74
79
|
|
75
80
|
it "should return the newest version of a cookbook when given multiple versions" do
|
76
|
-
Chef::Environment.should_receive(:
|
81
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env_many_versions", nil).and_return(@filtered_cookbook_list_env_many_versions)
|
82
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cookbook1_v4], nil).and_return([@cookbook1_v4])
|
77
83
|
response = post_json("/environments/env_many_versions/cookbook_versions", {"run_list" => ["recipe[cookbook1]"]})
|
78
84
|
|
79
85
|
response.should be_kind_of(Hash)
|
@@ -83,7 +89,8 @@ describe "Environments controller" do
|
|
83
89
|
end
|
84
90
|
|
85
91
|
it "should return the asked-for, older version of a cookbook if the version is specified in the run_list" do
|
86
|
-
Chef::Environment.should_receive(:
|
92
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env_many_versions", nil).and_return(@filtered_cookbook_list_env_many_versions)
|
93
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cookbook1_v1], nil).and_return([@cookbook1_v1])
|
87
94
|
response = post_json("/environments/env_many_versions/cookbook_versions", {"run_list" => ["recipe[cookbook1@1.0.0]"]})
|
88
95
|
|
89
96
|
response.should be_kind_of(Hash)
|
@@ -93,7 +100,7 @@ describe "Environments controller" do
|
|
93
100
|
end
|
94
101
|
|
95
102
|
it "should report no_such_cookbook if given a dependency on a non-existant cookbook" do
|
96
|
-
Chef::Environment.should_receive(:
|
103
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
|
97
104
|
expected_error = {
|
98
105
|
"message" => "Run list contains invalid items: no such cookbook cookbook_nosuch.",
|
99
106
|
"non_existent_cookbooks" => ["cookbook_nosuch"],
|
@@ -106,7 +113,7 @@ describe "Environments controller" do
|
|
106
113
|
end
|
107
114
|
|
108
115
|
it "should report no_such_version if given a dependency on a cookbook that doesn't have any valid versions for an environment" do
|
109
|
-
Chef::Environment.should_receive(:
|
116
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
|
110
117
|
expected_error = {
|
111
118
|
"message" => "Run list contains invalid items: no versions match the constraints on cookbook cookbook_noversions.",
|
112
119
|
"non_existent_cookbooks" => [],
|
@@ -121,7 +128,7 @@ describe "Environments controller" do
|
|
121
128
|
# TODO; have top-level cookbooks depend on other, non-existent cookbooks,
|
122
129
|
# to get the other kind of exceptions.
|
123
130
|
it "should report multiple failures (compound exceptions) if there is more than one error in dependencies" do
|
124
|
-
Chef::Environment.should_receive(:
|
131
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
|
125
132
|
|
126
133
|
expected_error = {
|
127
134
|
"message" => "Run list contains invalid items: no such cookbooks cookbook_nosuch_1, cookbook_nosuch_2; no versions match the constraints on cookbook cookbook_noversions.",
|
@@ -50,9 +50,10 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
50
50
|
@role_containing_nosuch_cookbook = make_role("role_containing_nosuch_cookbook")
|
51
51
|
@role_containing_nosuch_cookbook.env_run_lists({"_default" => make_runlist("recipe[cookbook_nosuch]")})
|
52
52
|
|
53
|
+
@cb_for_default = make_cookbook("cb_for_default", "1.0.0")
|
54
|
+
@cb_for_env1 = make_cookbook("cb_for_env1", "1.0.0")
|
53
55
|
@all_filtered_cookbook_list =
|
54
|
-
make_filtered_cookbook_hash(
|
55
|
-
make_cookbook("cb_for_env1", "1.0.0"))
|
56
|
+
make_filtered_cookbook_hash(@cb_for_default, @cb_for_env1)
|
56
57
|
end
|
57
58
|
|
58
59
|
describe "when handling Node API calls" do
|
@@ -60,7 +61,8 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
60
61
|
# Test that node@_default resolves to use cookbook cb_for_default
|
61
62
|
Chef::Node.should_receive(:cdb_load).with("node1").and_return(@node1)
|
62
63
|
Chef::Role.should_receive(:cdb_load).with("role1", nil).and_return(@role1)
|
63
|
-
Chef::Environment.should_receive(:
|
64
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
|
65
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cb_for_default], nil).and_return([@cb_for_default])
|
64
66
|
|
65
67
|
response = get_json("/nodes/node1/cookbooks")
|
66
68
|
response.should be_kind_of(Hash)
|
@@ -73,7 +75,8 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
73
75
|
@node1.chef_environment("env1")
|
74
76
|
Chef::Node.should_receive(:cdb_load).with("node1").and_return(@node1)
|
75
77
|
Chef::Role.should_receive(:cdb_load).with("role1", nil).and_return(@role1)
|
76
|
-
Chef::Environment.should_receive(:
|
78
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env1", nil).and_return(@all_filtered_cookbook_list)
|
79
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cb_for_env1], nil).and_return([@cb_for_env1])
|
77
80
|
|
78
81
|
response = get_json("/nodes/node1/cookbooks")
|
79
82
|
response.should be_kind_of(Hash)
|
@@ -87,7 +90,8 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
87
90
|
@node1.chef_environment("env_fallback")
|
88
91
|
Chef::Node.should_receive(:cdb_load).with("node1").and_return(@node1)
|
89
92
|
Chef::Role.should_receive(:cdb_load).with("role1", nil).and_return(@role1)
|
90
|
-
Chef::Environment.should_receive(:
|
93
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("env_fallback", nil).and_return(@all_filtered_cookbook_list)
|
94
|
+
Chef::MinimalCookbookVersion.should_receive(:load_full_versions_of).with([@cb_for_default], nil).and_return([@cb_for_default])
|
91
95
|
|
92
96
|
response = get_json("/nodes/node1/cookbooks")
|
93
97
|
response.should be_kind_of(Hash)
|
@@ -103,7 +107,7 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
103
107
|
}.to_json
|
104
108
|
|
105
109
|
Chef::Node.should_receive(:cdb_load).with("node_containing_nosuch_cookbook").and_return(@node_containing_nosuch_cookbook)
|
106
|
-
Chef::Environment.should_receive(:
|
110
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
|
107
111
|
|
108
112
|
lambda {
|
109
113
|
response = get_json("/nodes/node_containing_nosuch_cookbook/cookbooks")
|
@@ -120,7 +124,7 @@ describe "Nodes controller - environments and run_list expansion" do
|
|
120
124
|
|
121
125
|
Chef::Node.should_receive(:cdb_load).with("node_containing_role_containing_nosuch_cookbook").and_return(@node_containing_role_containing_nosuch_cookbook)
|
122
126
|
Chef::Role.should_receive(:cdb_load).with("role_containing_nosuch_cookbook", nil).and_return(@role_containing_nosuch_cookbook)
|
123
|
-
Chef::Environment.should_receive(:
|
127
|
+
Chef::Environment.should_receive(:cdb_minimal_filtered_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
|
124
128
|
|
125
129
|
lambda {
|
126
130
|
response = get_json("/nodes/node_containing_role_containing_nosuch_cookbook/cookbooks")
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-server-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 10
|
9
|
-
- 4
|
10
|
-
version: 0.10.4
|
4
|
+
prerelease: 7
|
5
|
+
version: 0.10.6.beta.1
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Opscode
|
@@ -15,158 +10,97 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-10-31 00:00:00 -07:00
|
14
|
+
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
17
|
+
name: merb-core
|
21
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
22
19
|
none: false
|
23
20
|
requirements:
|
24
21
|
- - ~>
|
25
22
|
- !ruby/object:Gem::Version
|
26
|
-
hash: 19
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 1
|
30
|
-
- 0
|
31
23
|
version: 1.1.0
|
32
|
-
version_requirements: *id001
|
33
|
-
name: merb-core
|
34
|
-
prerelease: false
|
35
24
|
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *id001
|
36
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: merb-assets
|
37
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
30
|
none: false
|
39
31
|
requirements:
|
40
32
|
- - ~>
|
41
33
|
- !ruby/object:Gem::Version
|
42
|
-
hash: 19
|
43
|
-
segments:
|
44
|
-
- 1
|
45
|
-
- 1
|
46
|
-
- 0
|
47
34
|
version: 1.1.0
|
48
|
-
version_requirements: *id002
|
49
|
-
name: merb-assets
|
50
|
-
prerelease: false
|
51
35
|
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
52
38
|
- !ruby/object:Gem::Dependency
|
39
|
+
name: merb-helpers
|
53
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
42
|
requirements:
|
56
43
|
- - ~>
|
57
44
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 19
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 1
|
62
|
-
- 0
|
63
45
|
version: 1.1.0
|
64
|
-
version_requirements: *id003
|
65
|
-
name: merb-helpers
|
66
|
-
prerelease: false
|
67
46
|
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
68
49
|
- !ruby/object:Gem::Dependency
|
50
|
+
name: merb-param-protection
|
69
51
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
52
|
none: false
|
71
53
|
requirements:
|
72
54
|
- - ~>
|
73
55
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 19
|
75
|
-
segments:
|
76
|
-
- 1
|
77
|
-
- 1
|
78
|
-
- 0
|
79
56
|
version: 1.1.0
|
80
|
-
version_requirements: *id004
|
81
|
-
name: merb-param-protection
|
82
|
-
prerelease: false
|
83
57
|
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
84
60
|
- !ruby/object:Gem::Dependency
|
61
|
+
name: mixlib-authentication
|
85
62
|
requirement: &id005 !ruby/object:Gem::Requirement
|
86
63
|
none: false
|
87
64
|
requirements:
|
88
65
|
- - ">="
|
89
66
|
- !ruby/object:Gem::Version
|
90
|
-
hash: 21
|
91
|
-
segments:
|
92
|
-
- 1
|
93
|
-
- 1
|
94
|
-
- 3
|
95
67
|
version: 1.1.3
|
96
|
-
version_requirements: *id005
|
97
|
-
name: mixlib-authentication
|
98
|
-
prerelease: false
|
99
68
|
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
100
71
|
- !ruby/object:Gem::Dependency
|
72
|
+
name: dep_selector
|
101
73
|
requirement: &id006 !ruby/object:Gem::Requirement
|
102
74
|
none: false
|
103
75
|
requirements:
|
104
76
|
- - ">="
|
105
77
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 25
|
107
|
-
segments:
|
108
|
-
- 0
|
109
|
-
- 0
|
110
|
-
- 3
|
111
78
|
version: 0.0.3
|
112
|
-
version_requirements: *id006
|
113
|
-
name: dep_selector
|
114
|
-
prerelease: false
|
115
79
|
type: :runtime
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
|
-
requirements:
|
120
|
-
- - ">="
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
hash: 15
|
123
|
-
segments:
|
124
|
-
- 1
|
125
|
-
- 4
|
126
|
-
- 4
|
127
|
-
version: 1.4.4
|
128
|
-
- - <=
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
hash: 11
|
131
|
-
segments:
|
132
|
-
- 1
|
133
|
-
- 4
|
134
|
-
- 6
|
135
|
-
version: 1.4.6
|
136
|
-
version_requirements: *id007
|
137
|
-
name: json
|
138
80
|
prerelease: false
|
139
|
-
|
81
|
+
version_requirements: *id006
|
140
82
|
- !ruby/object:Gem::Dependency
|
141
|
-
|
83
|
+
name: uuidtools
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
142
85
|
none: false
|
143
86
|
requirements:
|
144
87
|
- - ~>
|
145
88
|
- !ruby/object:Gem::Version
|
146
|
-
hash: 9
|
147
|
-
segments:
|
148
|
-
- 2
|
149
|
-
- 1
|
150
|
-
- 1
|
151
89
|
version: 2.1.1
|
152
|
-
version_requirements: *id008
|
153
|
-
name: uuidtools
|
154
|
-
prerelease: false
|
155
90
|
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
156
93
|
- !ruby/object:Gem::Dependency
|
157
|
-
|
94
|
+
name: thin
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
158
96
|
none: false
|
159
97
|
requirements:
|
160
98
|
- - ">="
|
161
99
|
- !ruby/object:Gem::Version
|
162
|
-
hash: 3
|
163
|
-
segments:
|
164
|
-
- 0
|
165
100
|
version: "0"
|
166
|
-
version_requirements: *id009
|
167
|
-
name: thin
|
168
|
-
prerelease: false
|
169
101
|
type: :runtime
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: *id008
|
170
104
|
description: A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
|
171
105
|
email: chef@opscode.com
|
172
106
|
executables:
|
@@ -182,59 +116,60 @@ files:
|
|
182
116
|
- LICENSE
|
183
117
|
- README.rdoc
|
184
118
|
- Rakefile
|
119
|
+
- config/environments/development.rb
|
185
120
|
- config/init.rb
|
186
|
-
- config/router.rb
|
187
121
|
- config/rack.rb
|
188
|
-
- config/
|
122
|
+
- config/router.rb
|
189
123
|
- lib/chef-server-api/version.rb
|
190
124
|
- lib/chef-server-api.rb
|
191
|
-
- spec/unit/sandbox_file_spec.rb
|
192
|
-
- spec/unit/nodes_controller_environments_spec.rb
|
193
|
-
- spec/unit/environments_controller_spec.rb
|
194
|
-
- spec/unit/cookbooks_controller_spec.rb
|
195
|
-
- spec/unit/nodes_controller_spec.rb
|
196
|
-
- spec/spec_helper.rb
|
197
125
|
- spec/spec.opts
|
126
|
+
- spec/spec_helper.rb
|
198
127
|
- spec/spec_model_helper.rb
|
199
|
-
-
|
200
|
-
-
|
201
|
-
-
|
202
|
-
-
|
203
|
-
-
|
204
|
-
- app/views/exceptions/standard_error.html.erb
|
205
|
-
- app/views/exceptions/not_acceptable.html.haml
|
206
|
-
- app/controllers/search.rb
|
207
|
-
- app/controllers/exceptions.rb
|
208
|
-
- app/controllers/nodes.rb
|
128
|
+
- spec/unit/cookbooks_controller_spec.rb
|
129
|
+
- spec/unit/environments_controller_spec.rb
|
130
|
+
- spec/unit/nodes_controller_environments_spec.rb
|
131
|
+
- spec/unit/nodes_controller_spec.rb
|
132
|
+
- spec/unit/sandbox_file_spec.rb
|
209
133
|
- app/controllers/application.rb
|
134
|
+
- app/controllers/clients.rb
|
135
|
+
- app/controllers/cookbooks.rb
|
136
|
+
- app/controllers/data_bags.rb
|
210
137
|
- app/controllers/data_item.rb
|
138
|
+
- app/controllers/environments.rb
|
139
|
+
- app/controllers/exceptions.rb
|
211
140
|
- app/controllers/main.rb
|
141
|
+
- app/controllers/nodes.rb
|
212
142
|
- app/controllers/roles.rb
|
213
|
-
- app/controllers/users.rb
|
214
|
-
- app/controllers/clients.rb
|
215
143
|
- app/controllers/sandboxes.rb
|
216
|
-
- app/controllers/
|
217
|
-
- app/controllers/
|
218
|
-
- app/controllers/cookbooks.rb
|
219
|
-
- app/helpers/tarball_helper.rb
|
144
|
+
- app/controllers/search.rb
|
145
|
+
- app/controllers/users.rb
|
220
146
|
- app/helpers/cookbook_version_helper.rb
|
147
|
+
- app/helpers/tarball_helper.rb
|
221
148
|
- app/models/sandbox_file.rb
|
149
|
+
- app/views/exceptions/bad_request.json.erb
|
150
|
+
- app/views/exceptions/internal_server_error.html.erb
|
151
|
+
- app/views/exceptions/not_acceptable.html.haml
|
152
|
+
- app/views/exceptions/not_found.html.erb
|
153
|
+
- app/views/exceptions/standard_error.html.erb
|
154
|
+
- app/views/layout/application.html.erb
|
155
|
+
- app/views/main/index.html.erb
|
222
156
|
- public/images/avatar.png
|
223
157
|
- public/images/indicator.gif
|
224
158
|
- public/images/merb.jpg
|
225
159
|
- public/stylesheets/base.css
|
226
160
|
- public/stylesheets/chef.css
|
161
|
+
- public/stylesheets/themes/bec/style.css
|
162
|
+
- public/stylesheets/themes/bec-green/style.css
|
163
|
+
- public/stylesheets/themes/blue/style.css
|
227
164
|
- public/stylesheets/themes/default/style.css
|
228
|
-
- public/stylesheets/themes/kathleene/style.css
|
229
165
|
- public/stylesheets/themes/djime-cerulean/style.css
|
230
|
-
- public/stylesheets/themes/
|
231
|
-
- public/stylesheets/themes/bec-green/style.css
|
232
|
-
- public/stylesheets/themes/reidb-greenish/style.css
|
166
|
+
- public/stylesheets/themes/kathleene/style.css
|
233
167
|
- public/stylesheets/themes/orange/style.css
|
234
|
-
- public/stylesheets/themes/
|
168
|
+
- public/stylesheets/themes/reidb-greenish/style.css
|
235
169
|
- bin/chef-server
|
236
170
|
- config.ru
|
237
171
|
- development.ru
|
172
|
+
has_rdoc: true
|
238
173
|
homepage: http://wiki.opscode.com/display/chef
|
239
174
|
licenses: []
|
240
175
|
|
@@ -248,23 +183,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
183
|
requirements:
|
249
184
|
- - ">="
|
250
185
|
- !ruby/object:Gem::Version
|
251
|
-
hash: 3
|
252
|
-
segments:
|
253
|
-
- 0
|
254
186
|
version: "0"
|
255
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
188
|
none: false
|
257
189
|
requirements:
|
258
|
-
- - "
|
190
|
+
- - ">"
|
259
191
|
- !ruby/object:Gem::Version
|
260
|
-
|
261
|
-
segments:
|
262
|
-
- 0
|
263
|
-
version: "0"
|
192
|
+
version: 1.3.1
|
264
193
|
requirements: []
|
265
194
|
|
266
195
|
rubyforge_project:
|
267
|
-
rubygems_version: 1.
|
196
|
+
rubygems_version: 1.6.2
|
268
197
|
signing_key:
|
269
198
|
specification_version: 3
|
270
199
|
summary: A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
|