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 +13 -0
- data/Gemfile +9 -7
- data/Guardfile +9 -0
- data/lib/spice/environment.rb +85 -0
- data/lib/spice/mock.rb +1 -0
- data/lib/spice/version.rb +1 -1
- data/lib/spice.rb +7 -5
- data/spec/spice/environment_spec.rb +96 -0
- data/spec/spice_spec.rb +23 -0
- data/spec/support/environment_requests.rb +221 -0
- metadata +84 -84
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
|
10
|
-
gem "
|
11
|
-
gem "
|
12
|
-
gem
|
13
|
-
gem '
|
14
|
-
gem 'spork', '
|
15
|
-
gem '
|
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,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
data/lib/spice/version.rb
CHANGED
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
|
75
|
-
@
|
75
|
+
def default_chef_version
|
76
|
+
@default_chef_version || "0.9.14"
|
76
77
|
end
|
77
78
|
|
78
|
-
def chef_version
|
79
|
-
@chef_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
|
-
|
14
|
-
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
103
|
-
|
104
|
-
|
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:
|
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:
|
173
|
+
requirements:
|
174
|
+
- - ! '>='
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
177
|
requirements: []
|
178
|
-
|
179
178
|
rubyforge_project: spice
|
180
|
-
rubygems_version: 1.
|
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:
|