spice 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # Release Notes - Spice - Version 0.5.0
2
+
3
+ ## Bug
4
+
5
+ * url_path was not being reset
6
+ * added `chef_version` config variable to fix some people's issues with require `chef/version`
7
+
8
+ ## Improvement
9
+
10
+ * Node support!
11
+
12
+
13
+
1
14
  # Release Notes - Spice - Version 0.3.0
2
15
 
3
16
  ## Bug
data/Gemfile CHANGED
@@ -6,11 +6,13 @@ gem 'yajl-ruby'
6
6
 
7
7
  group :development, :test do
8
8
  gem "yard", "~> 0.6.4"
9
- gem "rspec", "~> 2.5.0"
10
- gem "cucumber", "~> 0.10.0"
11
- gem "webmock", "~> 1.6.2"
12
- gem "timecop", "~> 0.3.5"
13
- gem 'watchr'
14
- gem 'spork', '~> 0.9.0.rc'
15
- gem 'webmock', '~> 1.6.2'
9
+ gem 'rspec', '>= 2.6.0'
10
+ gem "webmock", ">= 1.6.2"
11
+ gem "timecop", ">= 0.3.5"
12
+ gem 'guard', '>= 0.6.2'
13
+ gem 'guard-rspec', '>= 0.4.2'
14
+ gem 'guard-spork', '>= 0.2.1'
15
+ gem 'spork', '>= 0.9.0.rc8'
16
+ gem 'rb-fsevent', '>= 0.4.3.1'
17
+ gem 'growl', '>= 1.0.3'
16
18
  end
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ guard 'rspec', :version => 2, :cli => "--format documentation" do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
6
+
7
+ guard 'spork' do
8
+ watch('spec/spec_helper.rb')
9
+ end
@@ -0,0 +1,85 @@
1
+ module Spice
2
+ class Environment < Spice::Chef
3
+ # Get a list of all data bags in the following syntax
4
+ # Spice::Environment.all
5
+ #
6
+ # @param [Hash] options the options hash. Currently does nothing
7
+ def self.all(options={})
8
+ connection.get("/environments")
9
+ end
10
+
11
+ # An alternative format for showing the contents of a data bag
12
+ # @example Retrieve the id and uri of items in a data bag called "users"
13
+ # Spice::Environment["users"] # => {"adam":"http://localhost:4000/data/users/adam"}
14
+ def self.[](name)
15
+ connection.get("/environments/#{name}")
16
+ end
17
+
18
+ # Show the contents of a data bag
19
+ # @example Retrieve the id and uri of items in a data bag called "users"
20
+ # Spice::Environment.show(:name => "users") # => {"adam":"http://localhost:4000/data/users/adam"}
21
+ #
22
+ # @param [Hash] options The options hash
23
+ # @option options [String] :name The name of your data bag
24
+ def self.show(options={})
25
+ raise ArgumentError, "Option :name must be present" unless options[:name]
26
+ name = options.delete(:name)
27
+ connection.get("/environments/#{name}")
28
+ end
29
+
30
+ # Create a a new data bag
31
+ #
32
+ # @example
33
+ # Spice::Environment.create(:name => "users")
34
+ #
35
+ # @param [Hash] options the options hash from which to create a data bag
36
+ # @option options [String] :name The name of your data bag
37
+
38
+ def self.create(options={})
39
+ options[:chef_type] ||= "environment"
40
+ options[:json_class] ||= "Chef::Environment"
41
+ options[:attributes] ||= {}
42
+ options[:description] ||= ""
43
+ options[:cookbook_versions] ||= {}
44
+ connection.post("/environments", options)
45
+ end
46
+
47
+ # Delete a data bag
48
+ #
49
+ # @example
50
+ # Spice::Environment.delete(:name => "users")
51
+ #
52
+ # @param [Hash] options the options hash from which to delete a data bag
53
+ # @option options [String] :name The name of your data bag
54
+
55
+ def self.delete(options={})
56
+ raise ArgumentError, "Option :name must be present" unless options[:name]
57
+ name = options.delete(:name)
58
+ connection.delete("/environments/#{name}", options)
59
+ end
60
+
61
+ # Shows a data bag item
62
+ #
63
+ # @example
64
+ # Spice::Environment.show_item(:name => "users", :id => "adam")
65
+ #
66
+ # @param [Hash] options the options hash from which to create a data bag
67
+ # @option options [String] :name The name of your data bag
68
+ # @option options [String] :id The id of the data bag item
69
+
70
+ def self.show_cookbook(options={})
71
+ raise ArgumentError, "Option :name must be present" unless options[:name]
72
+ raise ArgumentError, "Option :cookbook must be present" unless options[:cookbook]
73
+ name = options.delete(:name)
74
+ cookbook = options.delete(:cookbook)
75
+ connection.get("/environments/#{name}/cookbooks/#{cookbook}", options)
76
+ end
77
+
78
+ def self.list_cookbooks(options={})
79
+ raise ArgumentError, "Option :name must be present" unless options[:name]
80
+ name = options.delete(:name)
81
+ connection.get("/environments/#{name}/cookbooks", options)
82
+ end
83
+
84
+ end
85
+ end
data/lib/spice/mock.rb CHANGED
@@ -6,6 +6,7 @@ module Spice
6
6
  Spice.host = 'localhost'
7
7
  Spice.client_name = "testclient"
8
8
  Spice.key_file = "/tmp/keyfile.pem"
9
+ Spice.chef_version = "0.9.14"
9
10
  Spice.connect!
10
11
  end
11
12
 
data/lib/spice/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spice
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/spice.rb CHANGED
@@ -13,6 +13,7 @@ require 'spice/client'
13
13
  require 'spice/cookbook'
14
14
  require 'spice/data_bag'
15
15
  require 'spice/node'
16
+ require 'spice/environment'
16
17
  require 'spice/search'
17
18
  require 'spice/connection'
18
19
 
@@ -22,7 +23,7 @@ require 'spice/mock'
22
23
  module Spice
23
24
 
24
25
  class << self
25
- attr_writer :host, :port, :scheme, :url_path, :client_name, :connection, :key_file, :raw_key
26
+ attr_writer :host, :port, :scheme, :url_path, :client_name, :connection, :key_file, :raw_key, :chef_version
26
27
 
27
28
  def default_host
28
29
  @default_host || "localhost"
@@ -71,12 +72,12 @@ module Spice
71
72
  @raw_key = raw_key
72
73
  end
73
74
 
74
- def chef_version
75
- @chef_version || "0.9.14"
75
+ def default_chef_version
76
+ @default_chef_version || "0.9.14"
76
77
  end
77
78
 
78
- def chef_version=(version)
79
- @chef_version = version
79
+ def chef_version
80
+ @chef_version || default_chef_version
80
81
  end
81
82
 
82
83
  def url_path
@@ -100,6 +101,7 @@ module Spice
100
101
  @port = default_port
101
102
  @scheme = default_scheme
102
103
  @url_path = default_url_path
104
+ @chef_version = default_chef_version
103
105
  @key_file = nil
104
106
  @client_name = nil
105
107
  @connection = nil
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ module Spice
4
+ describe Environment do
5
+ describe ".all" do
6
+ before { stub_environment_list }
7
+ subject { Environment.all }
8
+
9
+ it { should have_body(environment_list_response) }
10
+ it { should respond_with(200) }
11
+ end
12
+
13
+ describe ".show" do
14
+ context "if the environment is found" do
15
+ before { stub_environment_show }
16
+ subject { Environment.show(:name => "dev") }
17
+
18
+ it { should have_body(environment_show_response) }
19
+ it { should respond_with(200) }
20
+ end
21
+
22
+ context "if the environment is not found" do
23
+ before { stub_environment_show(404) }
24
+ subject { Environment.show(:name => "dev") }
25
+
26
+ it { should_not have_body(environment_show_response) }
27
+ it { should respond_with(404) }
28
+ end
29
+ end
30
+
31
+ describe ".create" do
32
+ context "if the environment can be created" do
33
+ before { stub_environment_create }
34
+ subject { Environment.create(:name => "dev") }
35
+
36
+ it { should have_body(environment_create_response) }
37
+ it { should respond_with(201) }
38
+ end
39
+
40
+ context "if the environment already exists" do
41
+ before { stub_environment_create(409) }
42
+ subject { Environment.create(:name => "dev") }
43
+
44
+ it { should have_body(environment_conflict) }
45
+ it { should respond_with(409) }
46
+ end
47
+ end
48
+
49
+ describe ".delete" do
50
+ context "if the environment can be deleted" do
51
+ before { stub_environment_delete }
52
+ subject { Environment.delete(:name => "dev") }
53
+
54
+ it { should have_body(environment_delete_response) }
55
+ it { should respond_with(200) }
56
+ end
57
+
58
+ context "if the environment cannot be deleted" do
59
+ before { stub_environment_delete(404) }
60
+ subject { Environment.delete(:name => "dev") }
61
+
62
+ it { should have_body(environment_not_found) }
63
+ it { should respond_with(404) }
64
+ end
65
+ end
66
+
67
+ describe ".list_cookbooks" do
68
+ context "if cookbooks exists" do
69
+ before { stub_environment_cookbooks_list }
70
+ subject { Environment.list_cookbooks(:name => "dev") }
71
+
72
+ it { should have_body(environment_cookbooks_list_response) }
73
+ it { should respond_with(200) }
74
+ end
75
+ end
76
+
77
+ describe ".show_cookbook" do
78
+ context "if the cookbook exists" do
79
+ before { stub_environment_cookbook_show }
80
+ subject { Environment.show_cookbook(:name => "dev", :cookbook => "apache") }
81
+
82
+ it { should have_body(environment_cookbook_show_response) }
83
+ it { should respond_with(200) }
84
+ end
85
+
86
+ context "if the cookbook does not exist" do
87
+ before { stub_environment_cookbook_show(404) }
88
+ subject { Environment.show_cookbook(:name => "dev", :cookbook => "apache") }
89
+
90
+ it { should have_body(environment_not_found) }
91
+ it { should respond_with(404) }
92
+ end
93
+ end
94
+
95
+ end
96
+ end
data/spec/spice_spec.rb CHANGED
@@ -37,6 +37,15 @@ describe "Spice" do
37
37
  lambda { Spice.default_url_path = "/woohah" }.should raise_error
38
38
  end
39
39
  end
40
+
41
+ describe ".default_chef_version" do
42
+ it "should default to '0.9.14'" do
43
+ Spice.default_chef_version.should == "0.9.14"
44
+ end
45
+ it "should not be settable" do
46
+ lambda { Spice.default_chef_version = "0.9.12" }.should raise_error
47
+ end
48
+ end
40
49
 
41
50
  describe ".host" do
42
51
  it "should default to 'localhost' if not set" do
@@ -78,6 +87,16 @@ describe "Spice" do
78
87
  end
79
88
  end
80
89
 
90
+ describe ".chef_version" do
91
+ it "should default to '0.9.14' if not set" do
92
+ Spice.chef_version.should == "0.9.14"
93
+ end
94
+ it "should be settable" do
95
+ Spice.chef_version = "0.9.12"
96
+ Spice.chef_version.should == "0.9.12"
97
+ end
98
+ end
99
+
81
100
  describe ".client_name" do
82
101
  before { Spice.reset! }
83
102
  it "should not have a default" do
@@ -132,6 +151,10 @@ describe "Spice" do
132
151
  Spice.reset!
133
152
  Spice.scheme.should == "http"
134
153
  end
154
+ it "should reset Spice.chef_version" do
155
+ Spice.reset!
156
+ Spice.chef_version.should == "0.9.14"
157
+ end
135
158
  it "should reset Spice.url_path" do
136
159
  Spice.reset!
137
160
  Spice.url_path.should == ""
@@ -0,0 +1,221 @@
1
+ def stub_environment_list
2
+ stub_request(:get, "http://localhost:4000/environments").
3
+ to_return(
4
+ :status => 200,
5
+ :body => environment_list_response
6
+ )
7
+ end
8
+
9
+ def stub_environment_show(status=200)
10
+ case status
11
+ when 200
12
+ stub_request(:get, "http://localhost:4000/environments/dev").
13
+ to_return(
14
+ :status => status,
15
+ :body => environment_show_response
16
+ )
17
+ when 404
18
+ stub_request(:get, "http://localhost:4000/environments/dev").
19
+ to_return(
20
+ :status => status,
21
+ :body => environment_not_found
22
+ )
23
+ end
24
+ end
25
+
26
+ def stub_environment_create(status=201)
27
+ case status
28
+ when 201
29
+ stub_request(:post, "http://localhost:4000/environments").
30
+ with(
31
+ :body => environment_create_payload ).
32
+ to_return(
33
+ :status => status,
34
+ :body => environment_create_response
35
+ )
36
+ when 409
37
+ stub_request(:post, "http://localhost:4000/environments").
38
+ with(
39
+ :body => environment_create_payload ).
40
+ to_return(
41
+ :status => status,
42
+ :body => environment_conflict
43
+ )
44
+ end
45
+ end
46
+
47
+ def stub_environment_update(status=200)
48
+ case status
49
+ when 200
50
+ stub_request(:post, "http://localhost:4000/environments/dev").
51
+ with(
52
+ :body => environment_udpate_payload ).
53
+ to_return(
54
+ :status => status,
55
+ :body => environment_update_response
56
+ )
57
+ when 404
58
+ stub_request(:post, "http://localhost:4000/environments/dev").
59
+ with(
60
+ :body => environment_update_payload ).
61
+ to_return(
62
+ :status => status,
63
+ :body => environment_not_found
64
+ )
65
+ end
66
+ end
67
+
68
+ def stub_environment_delete(status=200)
69
+ case status
70
+ when 200
71
+ stub_request(:delete, "http://localhost:4000/environments/dev").
72
+ with(:body => "").
73
+ to_return(
74
+ :status => status,
75
+ :body => environment_delete_response
76
+ )
77
+ when 404
78
+ stub_request(:delete, "http://localhost:4000/environments/dev").
79
+ with(:body => "").
80
+ to_return(
81
+ :status => status,
82
+ :body => environment_not_found
83
+ )
84
+ end
85
+ end
86
+
87
+ def stub_environment_cookbooks_list
88
+ stub_request(:get, "http://localhost:4000/environments/dev/cookbooks").
89
+ to_return(
90
+ :status => 200,
91
+ :body => environment_cookbooks_list_response
92
+ )
93
+ end
94
+
95
+ def stub_environment_cookbook_show(status=200)
96
+ case status
97
+ when 200
98
+ stub_request(:get, "http://localhost:4000/environments/dev/cookbooks/apache").
99
+ to_return(
100
+ :status => status,
101
+ :body => environment_cookbook_show_response
102
+ )
103
+ when 404
104
+ stub_request(:get, "http://localhost:4000/environments/dev/cookbooks/apache").
105
+ to_return(
106
+ :status => status,
107
+ :body => environment_not_found
108
+ )
109
+ end
110
+ end
111
+
112
+
113
+ # payloads and responses
114
+
115
+ def environment_list_response
116
+ { "webserver" => "http://localhost:4000/environments/webserver" }
117
+ end
118
+
119
+ def environment_show_response
120
+ {
121
+ "name" => "dev",
122
+ "attributes" => {
123
+ },
124
+ "json_class" => "Chef::Environment",
125
+ "description" => "",
126
+ "cookbook_versions" => {
127
+ },
128
+ "chef_type" => "environment"
129
+ }
130
+ end
131
+
132
+ def environment_create_response
133
+ { "uri" => "http://localhost:4000/environments/dev" }
134
+ end
135
+
136
+ def environment_delete_response
137
+ {
138
+ "name" => "dev",
139
+ "attributes" => {
140
+ },
141
+ "json_class" => "Chef::Environment",
142
+ "description" => "",
143
+ "cookbook_versions" => {
144
+ },
145
+ "chef_type" => "environment"
146
+ }
147
+ end
148
+
149
+ def environment_update_response
150
+ {
151
+ "name" => "dev",
152
+ "attributes" => {
153
+ },
154
+ "json_class" => "Chef::Environment",
155
+ "description" => "The Dev Environment",
156
+ "cookbook_versions" => {
157
+ },
158
+ "chef_type" => "environment"
159
+ }
160
+ end
161
+
162
+
163
+ def environment_cookbooks_list_response
164
+ {
165
+ "apache2" => {
166
+ "url" => "http://localhost:4000/cookbooks/apache2",
167
+ "versions" => [
168
+ { "url" => "http://localhost:4000/cookbooks/apache2/5.1.0", "version" => "5.1.0" },
169
+ { "url" => "http://localhost:4000/cookbooks/apache2/4.2.0", "version" => "4.2.0" }
170
+ ]
171
+ },
172
+ "nginx" => {
173
+ "url" => "http://localhost:4000/cookbooks/nginx",
174
+ "versions" => [
175
+ { "url" => "http://localhost:4000/cookbooks/nginx/1.0.0", "version" => "1.0.0" },
176
+ { "url" => "http://localhost:4000/cookbooks/nginx/0.3.0", "version" => "0.3.0" }
177
+ ]
178
+ }
179
+ }
180
+ end
181
+
182
+ def environment_cookbook_show_response
183
+ {
184
+ "apache2" => {
185
+ "url" => "http://localhost:4000/cookbooks/apache2",
186
+ "versions" => [
187
+ { "url" => "http://localhost:4000/cookbooks/apache2/5.1.0", "version" => "5.1.0" },
188
+ {"url" => "http://localhost:4000/cookbooks/apache2/4.2.0", "version" => "4.2.0" }
189
+ ]
190
+ }
191
+ }
192
+ end
193
+
194
+ def environment_not_found
195
+ { "error" => [ "Could not load environment env" ] }
196
+ end
197
+
198
+ def environment_cookbook_not_found
199
+ { "error" => [ "Could not load environment env cookbook apache" ] }
200
+ end
201
+
202
+ def environment_conflict
203
+ { "error" => [ "environments bag already exists" ] }
204
+ end
205
+
206
+ def environment_create_payload
207
+ {
208
+ "name" => "dev",
209
+ "attributes" => {
210
+ },
211
+ "json_class" => "Chef::Environment",
212
+ "description" => "",
213
+ "cookbook_versions" => {
214
+ },
215
+ "chef_type" => "environment"
216
+ }
217
+ end
218
+
219
+ def environment_update_payload
220
+ { "description" => "The Dev Environment" }
221
+ end
metadata CHANGED
@@ -1,121 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spice
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
4
5
  prerelease:
5
- version: 0.5.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Dan Ryan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-15 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rest-client
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70110849680300 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: mixlib-authentication
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70110849680300
25
+ - !ruby/object:Gem::Dependency
26
+ name: mixlib-authentication
27
+ requirement: &70110849679800 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: yajl-ruby
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70110849679800
36
+ - !ruby/object:Gem::Dependency
37
+ name: yajl-ruby
38
+ requirement: &70110849679320 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: yard
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70110849679320
47
+ - !ruby/object:Gem::Dependency
48
+ name: yard
49
+ requirement: &70110849678760 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
56
54
  version: 0.6.4
57
55
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rspec
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70110849678760
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70110849678260 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
62
+ requirements:
65
63
  - - ~>
66
- - !ruby/object:Gem::Version
64
+ - !ruby/object:Gem::Version
67
65
  version: 2.5.0
68
66
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: webmock
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70110849678260
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: &70110849677800 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
73
+ requirements:
76
74
  - - ~>
77
- - !ruby/object:Gem::Version
75
+ - !ruby/object:Gem::Version
78
76
  version: 1.6.2
79
77
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: timecop
83
78
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70110849677800
80
+ - !ruby/object:Gem::Dependency
81
+ name: timecop
82
+ requirement: &70110849677300 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
84
+ requirements:
87
85
  - - ~>
88
- - !ruby/object:Gem::Version
86
+ - !ruby/object:Gem::Version
89
87
  version: 0.3.5
90
88
  type: :development
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
93
- name: webmock
94
89
  prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *70110849677300
91
+ - !ruby/object:Gem::Dependency
92
+ name: webmock
93
+ requirement: &70110849676800 !ruby/object:Gem::Requirement
96
94
  none: false
97
- requirements:
95
+ requirements:
98
96
  - - ~>
99
- - !ruby/object:Gem::Version
97
+ - !ruby/object:Gem::Version
100
98
  version: 1.6.2
101
99
  type: :development
102
- version_requirements: *id008
103
- description: Spice is a zesty Chef API wrapper. Its primary purpose is to let you easily integrate your apps with a Chef server easily. Spice provides support for the entire released Chef API
104
- email:
100
+ prerelease: false
101
+ version_requirements: *70110849676800
102
+ description: Spice is a zesty Chef API wrapper. Its primary purpose is to let you
103
+ easily integrate your apps with a Chef server easily. Spice provides support for
104
+ the entire released Chef API
105
+ email:
105
106
  - hi@iamdanryan.com
106
107
  executables: []
107
-
108
108
  extensions: []
109
-
110
109
  extra_rdoc_files: []
111
-
112
- files:
110
+ files:
113
111
  - .document
114
112
  - .gitignore
115
113
  - .rspec
116
114
  - .watchr
117
115
  - CHANGELOG.md
118
116
  - Gemfile
117
+ - Guardfile
119
118
  - LICENSE.txt
120
119
  - README.md
121
120
  - Rakefile
@@ -128,6 +127,7 @@ files:
128
127
  - lib/spice/cookbook.rb
129
128
  - lib/spice/core_ext/hash.rb
130
129
  - lib/spice/data_bag.rb
130
+ - lib/spice/environment.rb
131
131
  - lib/spice/mock.rb
132
132
  - lib/spice/node.rb
133
133
  - lib/spice/role.rb
@@ -140,6 +140,7 @@ files:
140
140
  - spec/spice/connection_spec.rb
141
141
  - spec/spice/cookbook_spec.rb
142
142
  - spec/spice/data_bag_spec.rb
143
+ - spec/spice/environment_spec.rb
143
144
  - spec/spice/node_spec.rb
144
145
  - spec/spice/role_spec.rb
145
146
  - spec/spice/search_spec.rb
@@ -149,6 +150,7 @@ files:
149
150
  - spec/support/cookbook_requests.rb
150
151
  - spec/support/data_bag_item_requests.rb
151
152
  - spec/support/data_bag_requests.rb
153
+ - spec/support/environment_requests.rb
152
154
  - spec/support/node_requests.rb
153
155
  - spec/support/requests.rb
154
156
  - spec/support/respond_with_matcher.rb
@@ -156,32 +158,29 @@ files:
156
158
  - spice.gemspec
157
159
  homepage: http://github.com/danryan/spice
158
160
  licenses: []
159
-
160
161
  post_install_message:
161
162
  rdoc_options: []
162
-
163
- require_paths:
163
+ require_paths:
164
164
  - lib
165
- required_ruby_version: !ruby/object:Gem::Requirement
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
166
  none: false
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- version: "0"
171
- required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ! '>='
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  none: false
173
- requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- version: "0"
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
177
  requirements: []
178
-
179
178
  rubyforge_project: spice
180
- rubygems_version: 1.7.2
179
+ rubygems_version: 1.8.8
181
180
  signing_key:
182
181
  specification_version: 3
183
182
  summary: Chef API wrapper
184
- test_files:
183
+ test_files:
185
184
  - spec/spec_helper.rb
186
185
  - spec/spice/authentication_spec.rb
187
186
  - spec/spice/chef_spec.rb
@@ -189,6 +188,7 @@ test_files:
189
188
  - spec/spice/connection_spec.rb
190
189
  - spec/spice/cookbook_spec.rb
191
190
  - spec/spice/data_bag_spec.rb
191
+ - spec/spice/environment_spec.rb
192
192
  - spec/spice/node_spec.rb
193
193
  - spec/spice/role_spec.rb
194
194
  - spec/spice/search_spec.rb
@@ -198,8 +198,8 @@ test_files:
198
198
  - spec/support/cookbook_requests.rb
199
199
  - spec/support/data_bag_item_requests.rb
200
200
  - spec/support/data_bag_requests.rb
201
+ - spec/support/environment_requests.rb
201
202
  - spec/support/node_requests.rb
202
203
  - spec/support/requests.rb
203
204
  - spec/support/respond_with_matcher.rb
204
205
  - spec/support/role_requests.rb
205
- has_rdoc: