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.
@@ -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.