chef-server-api 0.10.4 → 0.10.6.beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- # We can only get here if we're admin or the validator. Only
53
- # allow creating admin clients if we're already an admin.
54
- if @auth_user.admin
55
- params[:admin] ||= params[:inflated_object].admin
56
- else
57
- params[:admin] = false
58
- end
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
- filename = Chef::Checksum.new(checksum).file_location
143
- raise InternalServerError, "File with checksum #{checksum} not found in the repository (this should not happen)" unless File.exists?(filename)
142
+ begin
143
+ filename = Chef::Checksum.new(checksum).storage.file_location
144
144
 
145
- send_file(filename)
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
- raise BadRequest, "cannot update sandbox #{sandbox_id}: already complete" if existing_sandbox.is_completed
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)
@@ -1,3 +1,3 @@
1
1
  module ChefServerApi
2
- VERSION = '0.10.4'
2
+ VERSION = '0.10.6.beta.1'
3
3
  end
@@ -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 "Coobkooks Controller" do
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
- @filtered_cookbook_list_env1 = make_filtered_cookbook_hash(make_cookbook("cookbook1", "1.0.0"),
31
- make_cookbook("cookbook2", "1.0.0"))
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
- @filtered_cookbook_list_env2 = make_filtered_cookbook_hash(make_cookbook("cookbook1", "2.0.0"),
35
- make_cookbook("cookbook2", "2.0.0"))
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
- @filtered_cookbook_list_env_many_versions = make_filtered_cookbook_hash(make_cookbook("cookbook1", "1.0.0"),
38
- make_cookbook("cookbook1", "2.0.0"),
39
- make_cookbook("cookbook1", "3.0.0"),
40
- make_cookbook("cookbook1", "4.0.0"))
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(:cdb_load_filtered_cookbook_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
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(:cdb_load_filtered_cookbook_versions).with("env2", nil).and_return(@filtered_cookbook_list_env2)
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(:cdb_load_filtered_cookbook_versions).with("env_many_versions", nil).and_return(@filtered_cookbook_list_env_many_versions)
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(:cdb_load_filtered_cookbook_versions).with("env_many_versions", nil).and_return(@filtered_cookbook_list_env_many_versions)
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(:cdb_load_filtered_cookbook_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
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(:cdb_load_filtered_cookbook_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
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(:cdb_load_filtered_cookbook_versions).with("env1", nil).and_return(@filtered_cookbook_list_env1)
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(make_cookbook("cb_for_default", "1.0.0"),
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(:cdb_load_filtered_cookbook_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
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(:cdb_load_filtered_cookbook_versions).with("env1", nil).and_return(@all_filtered_cookbook_list)
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(:cdb_load_filtered_cookbook_versions).with("env_fallback", nil).and_return(@all_filtered_cookbook_list)
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(:cdb_load_filtered_cookbook_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
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(:cdb_load_filtered_cookbook_versions).with("_default", nil).and_return(@all_filtered_cookbook_list)
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
- hash: 63
5
- prerelease:
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-08-11 00:00:00 Z
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
- type: :runtime
81
+ version_requirements: *id006
140
82
  - !ruby/object:Gem::Dependency
141
- requirement: &id008 !ruby/object:Gem::Requirement
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
- requirement: &id009 !ruby/object:Gem::Requirement
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/environments/development.rb
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
- - app/views/layout/application.html.erb
200
- - app/views/main/index.html.erb
201
- - app/views/exceptions/not_found.html.erb
202
- - app/views/exceptions/bad_request.json.erb
203
- - app/views/exceptions/internal_server_error.html.erb
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/environments.rb
217
- - app/controllers/data_bags.rb
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/blue/style.css
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/bec/style.css
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
- hash: 3
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.7.2
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.