chef-server-api 0.8.10 → 0.8.14

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/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'merb-core'
5
5
  require 'merb-core/tasks/merb'
6
6
 
7
7
  GEM_NAME = "chef-server-api"
8
- CHEF_SERVER_VERSION="0.8.10"
8
+ CHEF_SERVER_VERSION="0.8.14"
9
9
  AUTHOR = "Opscode"
10
10
  EMAIL = "chef@opscode.com"
11
11
  HOMEPAGE = "http://wiki.opscode.com/display/chef"
@@ -22,16 +22,18 @@ spec = Gem::Specification.new do |s|
22
22
  s.author = AUTHOR
23
23
  s.email = EMAIL
24
24
  s.homepage = HOMEPAGE
25
-
25
+
26
26
  s.add_dependency "merb-core", "~> 1.0.0"
27
27
  s.add_dependency "merb-slices", "~> 1.0.0"
28
28
  s.add_dependency "merb-assets", "~> 1.0.0"
29
29
  s.add_dependency "merb-helpers", "~> 1.0.0"
30
- ["thin",
31
- "json",
32
- "uuidtools"
33
- ].each { |g| s.add_dependency g}
34
-
30
+
31
+ s.add_dependency "json", "<= 1.4.2"
32
+
33
+ s.add_dependency "uuidtools", "~> 2.1.1"
34
+
35
+ s.add_dependency "thin"
36
+
35
37
  s.require_path = 'lib'
36
38
  s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{config,lib,spec,app,public,stubs}/**/*")
37
39
  end
@@ -88,6 +88,14 @@ class ChefServerApi::Application < Merb::Controller
88
88
  end
89
89
  end
90
90
 
91
+ def is_admin_or_validator
92
+ if @auth_user.admin || @auth_user.name == Chef::Config[:validation_client_name]
93
+ true
94
+ else
95
+ raise Unauthorized, "You are not allowed to take this action."
96
+ end
97
+ end
98
+
91
99
  def is_correct_node
92
100
  if @auth_user.admin || @auth_user.name == params[:id]
93
101
  true
@@ -23,8 +23,9 @@ class ChefServerApi::Clients < ChefServerApi::Application
23
23
  provides :json
24
24
 
25
25
  before :authenticate_every
26
- before :is_admin, :only => :index
27
- before :is_correct_node, :only => [ :show, :create, :update, :destroy ]
26
+ before :is_admin, :only => [ :index, :update, :destroy ]
27
+ before :is_admin_or_validator, :only => [ :create ]
28
+ before :is_correct_node, :only => [ :show ]
28
29
 
29
30
  # GET /clients
30
31
  def index
@@ -48,7 +49,13 @@ class ChefServerApi::Clients < ChefServerApi::Application
48
49
  exists = true
49
50
  if params.has_key?(:inflated_object)
50
51
  params[:name] ||= params[:inflated_object].name
51
- params[:admin] ||= params[:inflated_object].admin
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
59
  end
53
60
 
54
61
  begin
@@ -75,7 +75,7 @@ if defined?(Merb::Plugins)
75
75
  Chef::Certificate.gen_validation_key
76
76
 
77
77
  # Generate the Web UI Key
78
- Chef::Certificate.gen_validation_key(Chef::Config[:web_ui_client_name], Chef::Config[:web_ui_key])
78
+ Chef::Certificate.gen_validation_key(Chef::Config[:web_ui_client_name], Chef::Config[:web_ui_key], true)
79
79
 
80
80
  Chef::Log.info('Loading roles')
81
81
  Chef::Role.sync_from_disk_to_couchdb
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 8
8
- - 10
9
- version: 0.8.10
8
+ - 14
9
+ version: 0.8.14
10
10
  platform: ruby
11
11
  authors:
12
12
  - Opscode
@@ -14,13 +14,14 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-01 00:00:00 -07:00
17
+ date: 2010-05-07 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: merb-core
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ~>
26
27
  - !ruby/object:Gem::Version
@@ -35,6 +36,7 @@ dependencies:
35
36
  name: merb-slices
36
37
  prerelease: false
37
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
38
40
  requirements:
39
41
  - - ~>
40
42
  - !ruby/object:Gem::Version
@@ -49,6 +51,7 @@ dependencies:
49
51
  name: merb-assets
50
52
  prerelease: false
51
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
52
55
  requirements:
53
56
  - - ~>
54
57
  - !ruby/object:Gem::Version
@@ -63,6 +66,7 @@ dependencies:
63
66
  name: merb-helpers
64
67
  prerelease: false
65
68
  requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
66
70
  requirements:
67
71
  - - ~>
68
72
  - !ruby/object:Gem::Version
@@ -74,33 +78,40 @@ dependencies:
74
78
  type: :runtime
75
79
  version_requirements: *id004
76
80
  - !ruby/object:Gem::Dependency
77
- name: thin
81
+ name: json
78
82
  prerelease: false
79
83
  requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
80
85
  requirements:
81
- - - ">="
86
+ - - <=
82
87
  - !ruby/object:Gem::Version
83
88
  segments:
84
- - 0
85
- version: "0"
89
+ - 1
90
+ - 4
91
+ - 2
92
+ version: 1.4.2
86
93
  type: :runtime
87
94
  version_requirements: *id005
88
95
  - !ruby/object:Gem::Dependency
89
- name: json
96
+ name: uuidtools
90
97
  prerelease: false
91
98
  requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
92
100
  requirements:
93
- - - ">="
101
+ - - ~>
94
102
  - !ruby/object:Gem::Version
95
103
  segments:
96
- - 0
97
- version: "0"
104
+ - 2
105
+ - 1
106
+ - 1
107
+ version: 2.1.1
98
108
  type: :runtime
99
109
  version_requirements: *id006
100
110
  - !ruby/object:Gem::Dependency
101
- name: uuidtools
111
+ name: thin
102
112
  prerelease: false
103
113
  requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
104
115
  requirements:
105
116
  - - ">="
106
117
  - !ruby/object:Gem::Version
@@ -177,6 +188,7 @@ rdoc_options: []
177
188
  require_paths:
178
189
  - lib
179
190
  required_ruby_version: !ruby/object:Gem::Requirement
191
+ none: false
180
192
  requirements:
181
193
  - - ">="
182
194
  - !ruby/object:Gem::Version
@@ -184,6 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
196
  - 0
185
197
  version: "0"
186
198
  required_rubygems_version: !ruby/object:Gem::Requirement
199
+ none: false
187
200
  requirements:
188
201
  - - ">="
189
202
  - !ruby/object:Gem::Version
@@ -193,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
206
  requirements: []
194
207
 
195
208
  rubyforge_project:
196
- rubygems_version: 1.3.6
209
+ rubygems_version: 1.3.6.1
197
210
  signing_key:
198
211
  specification_version: 3
199
212
  summary: A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.