spice 0.8.0 → 1.0.0.pre
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/.gitignore +1 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +6 -6
- data/README.md +5 -63
- data/lib/spice.rb +56 -151
- data/lib/spice/client.rb +23 -36
- data/lib/spice/config.rb +52 -0
- data/lib/spice/connection.rb +89 -74
- data/lib/spice/connection/authentication.rb +47 -0
- data/lib/spice/connection/clients.rb +15 -0
- data/lib/spice/connection/cookbooks.rb +42 -0
- data/lib/spice/connection/data_bags.rb +35 -0
- data/lib/spice/connection/environments.rb +16 -0
- data/lib/spice/connection/nodes.rb +15 -0
- data/lib/spice/connection/roles.rb +15 -0
- data/lib/spice/connection/search.rb +49 -0
- data/lib/spice/cookbook.rb +13 -30
- data/lib/spice/cookbook_version.rb +43 -0
- data/lib/spice/data_bag.rb +17 -121
- data/lib/spice/data_bag_item.rb +35 -0
- data/lib/spice/environment.rb +15 -79
- data/lib/spice/error.rb +30 -0
- data/lib/spice/node.rb +19 -36
- data/lib/spice/persistence.rb +42 -0
- data/lib/spice/request.rb +27 -0
- data/lib/spice/request/auth.rb +14 -0
- data/lib/spice/response/client_error.rb +30 -0
- data/lib/spice/response/parse_json.rb +24 -0
- data/lib/spice/role.rb +18 -25
- data/lib/spice/version.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- data/spice.gemspec +4 -3
- metadata +65 -42
- data/lib/spice/core_ext/hash.rb +0 -21
- data/lib/spice/search.rb +0 -23
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
# require 'spice/request/auth'
|
3
|
+
require 'spice/response/parse_json'
|
4
|
+
require 'spice/response/client_error'
|
5
|
+
|
6
|
+
module Spice
|
7
|
+
module Request
|
8
|
+
def request(options={})
|
9
|
+
default_options = {
|
10
|
+
:headers => {
|
11
|
+
:accept => 'application/json',
|
12
|
+
:content_type => 'application/json',
|
13
|
+
:user_agent => Spice.user_agent
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
Faraday.new(
|
18
|
+
default_options.deep_merge(Spice.connection_options).deep_merge(options)
|
19
|
+
) do |builder|
|
20
|
+
# builder.use Spice::Request::Auth
|
21
|
+
builder.use Spice::Response::ClientError
|
22
|
+
builder.use Spice::Response::ParseJSON
|
23
|
+
builder.adapter(:net_http)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
|
3
|
+
module Spice
|
4
|
+
module Response
|
5
|
+
class ClientError < Faraday::Response::Middleware
|
6
|
+
|
7
|
+
def on_complete(env)
|
8
|
+
case env[:status].to_i
|
9
|
+
when 400
|
10
|
+
raise Spice::BadRequest.new(error(env[:body]), env[:request_headers])
|
11
|
+
when 401
|
12
|
+
raise Spice::Unauthorized.new(error(env[:body]), env[:request_headers])
|
13
|
+
when 403
|
14
|
+
raise Spice::Forbidden.new(error(env[:body]), env[:request_headers])
|
15
|
+
when 404
|
16
|
+
raise Spice::NotFound.new(error(env[:body]), env[:request_headers])
|
17
|
+
when 406
|
18
|
+
raise Spice::NotAcceptable.new(error(env[:body]), env[:request_headers])
|
19
|
+
when 409
|
20
|
+
raise Spice::Conflict.new(error(env[:body]), env[:request_headers])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def error(body)
|
25
|
+
body["error"].join(',')
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'yajl'
|
3
|
+
|
4
|
+
module Spice
|
5
|
+
module Response
|
6
|
+
class ParseJSON < Faraday::Response::Middleware
|
7
|
+
|
8
|
+
def parse(body)
|
9
|
+
case body
|
10
|
+
when ''
|
11
|
+
nil
|
12
|
+
when 'true'
|
13
|
+
true
|
14
|
+
when 'false'
|
15
|
+
false
|
16
|
+
else
|
17
|
+
Yajl.load(body)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/spice/role.rb
CHANGED
@@ -1,30 +1,23 @@
|
|
1
|
+
require 'spice/persistence'
|
2
|
+
|
1
3
|
module Spice
|
2
|
-
class Role
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
class Role
|
5
|
+
include Toy::Store
|
6
|
+
include Spice::Persistence
|
7
|
+
extend Spice::Persistence
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
end
|
9
|
+
store :memory, {}
|
10
|
+
endpoint "roles"
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
name = options.delete(:name)
|
22
|
-
connection.put("/roles/#{name}", options)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.delete(options={})
|
26
|
-
name = options.delete(:name)
|
27
|
-
connection.delete("/roles/#{name}", options)
|
28
|
-
end
|
12
|
+
attribute :name, String
|
13
|
+
attribute :description, String
|
14
|
+
attribute :run_list, Array, :default => []
|
15
|
+
attribute :default_attributes, Hash, :default => {}
|
16
|
+
attribute :override_attributes, Hash, :default => {}
|
17
|
+
attribute :json_class, String, :default => "Chef::Role"
|
18
|
+
attribute :chef_type, String, :default => "role"
|
19
|
+
|
20
|
+
validates_presence_of :name, :description
|
21
|
+
|
29
22
|
end
|
30
23
|
end
|
data/lib/spice/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spice.gemspec
CHANGED
@@ -14,10 +14,11 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.rubyforge_project = "spice"
|
16
16
|
|
17
|
-
s.add_dependency "
|
18
|
-
s.add_dependency "
|
17
|
+
s.add_dependency "toystore", ">= 0.8.2"
|
18
|
+
s.add_dependency "adapter", ">= 0.5.2"
|
19
|
+
s.add_dependency "faraday"
|
19
20
|
s.add_dependency "mixlib-authentication", '>= 1.1.4'
|
20
|
-
s.add_dependency "yajl-ruby", '>=
|
21
|
+
s.add_dependency "yajl-ruby", '>= 1.1.0'
|
21
22
|
|
22
23
|
s.add_development_dependency 'rspec', '>= 2.6.0'
|
23
24
|
s.add_development_dependency "webmock", ">= 1.6.2"
|
metadata
CHANGED
@@ -1,41 +1,52 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0.pre
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Dan Ryan
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-16 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: toystore
|
16
|
+
requirement: &70283810072460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.8.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70283810072460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
26
|
+
name: adapter
|
27
|
+
requirement: &70283810071860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 0.5.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70283810071860
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: faraday
|
38
|
+
requirement: &70283810071480 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70283810071480
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: mixlib-authentication
|
38
|
-
requirement: &
|
49
|
+
requirement: &70283810070940 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,21 +54,21 @@ dependencies:
|
|
43
54
|
version: 1.1.4
|
44
55
|
type: :runtime
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *70283810070940
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: yajl-ruby
|
49
|
-
requirement: &
|
60
|
+
requirement: &70283810070300 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
53
64
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
65
|
+
version: 1.1.0
|
55
66
|
type: :runtime
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70283810070300
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rspec
|
60
|
-
requirement: &
|
71
|
+
requirement: &70283810069820 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: 2.6.0
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70283810069820
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: webmock
|
71
|
-
requirement: &
|
82
|
+
requirement: &70283810069360 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: 1.6.2
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70283810069360
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: timecop
|
82
|
-
requirement: &
|
93
|
+
requirement: &70283810068880 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: 0.3.5
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70283810068880
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: guard
|
93
|
-
requirement: &
|
104
|
+
requirement: &70283810068280 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: 0.6.2
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70283810068280
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: guard-rspec
|
104
|
-
requirement: &
|
115
|
+
requirement: &70283810067820 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: 0.4.2
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70283810067820
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: guard-spork
|
115
|
-
requirement: &
|
126
|
+
requirement: &70283810067360 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: 0.2.1
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70283810067360
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: spork
|
126
|
-
requirement: &
|
137
|
+
requirement: &70283810066740 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: 0.9.0.rc8
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70283810066740
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: rb-fsevent
|
137
|
-
requirement: &
|
148
|
+
requirement: &70283810066280 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: 0.4.3.1
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70283810066280
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: growl
|
148
|
-
requirement: &
|
159
|
+
requirement: &70283810065820 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,7 +164,7 @@ dependencies:
|
|
153
164
|
version: 1.0.3
|
154
165
|
type: :development
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *70283810065820
|
157
168
|
description: Spice is a zesty Chef API wrapper. Its primary purpose is to let you
|
158
169
|
easily integrate your apps with a Chef server easily. Spice provides support for
|
159
170
|
the entire released Chef API
|
@@ -178,15 +189,30 @@ files:
|
|
178
189
|
- lib/spice/authentication.rb
|
179
190
|
- lib/spice/chef.rb
|
180
191
|
- lib/spice/client.rb
|
192
|
+
- lib/spice/config.rb
|
181
193
|
- lib/spice/connection.rb
|
194
|
+
- lib/spice/connection/authentication.rb
|
195
|
+
- lib/spice/connection/clients.rb
|
196
|
+
- lib/spice/connection/cookbooks.rb
|
197
|
+
- lib/spice/connection/data_bags.rb
|
198
|
+
- lib/spice/connection/environments.rb
|
199
|
+
- lib/spice/connection/nodes.rb
|
200
|
+
- lib/spice/connection/roles.rb
|
201
|
+
- lib/spice/connection/search.rb
|
182
202
|
- lib/spice/cookbook.rb
|
183
|
-
- lib/spice/
|
203
|
+
- lib/spice/cookbook_version.rb
|
184
204
|
- lib/spice/data_bag.rb
|
205
|
+
- lib/spice/data_bag_item.rb
|
185
206
|
- lib/spice/environment.rb
|
207
|
+
- lib/spice/error.rb
|
186
208
|
- lib/spice/mock.rb
|
187
209
|
- lib/spice/node.rb
|
210
|
+
- lib/spice/persistence.rb
|
211
|
+
- lib/spice/request.rb
|
212
|
+
- lib/spice/request/auth.rb
|
213
|
+
- lib/spice/response/client_error.rb
|
214
|
+
- lib/spice/response/parse_json.rb
|
188
215
|
- lib/spice/role.rb
|
189
|
-
- lib/spice/search.rb
|
190
216
|
- lib/spice/version.rb
|
191
217
|
- spec/spec_helper.rb
|
192
218
|
- spec/spice/authentication_spec.rb
|
@@ -224,16 +250,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
224
250
|
version: '0'
|
225
251
|
segments:
|
226
252
|
- 0
|
227
|
-
hash: -
|
253
|
+
hash: -3673399458224302804
|
228
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
255
|
none: false
|
230
256
|
requirements:
|
231
|
-
- - ! '
|
257
|
+
- - ! '>'
|
232
258
|
- !ruby/object:Gem::Version
|
233
|
-
version:
|
234
|
-
segments:
|
235
|
-
- 0
|
236
|
-
hash: -1280305717282640060
|
259
|
+
version: 1.3.1
|
237
260
|
requirements: []
|
238
261
|
rubyforge_project: spice
|
239
262
|
rubygems_version: 1.8.10
|
data/lib/spice/core_ext/hash.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Spice
|
2
|
-
module CoreExt
|
3
|
-
module Hash
|
4
|
-
|
5
|
-
def symbolize_keys!
|
6
|
-
keys.each do |key|
|
7
|
-
self[(key.to_sym rescue key) || key] = delete(key)
|
8
|
-
end
|
9
|
-
self
|
10
|
-
end
|
11
|
-
def symbolize_keys
|
12
|
-
dup.symbolize_keys!
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class Hash
|
20
|
-
include Spice::CoreExt::Hash
|
21
|
-
end
|