amazon-ec2 0.3.6 → 0.3.8
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/CHANGELOG +4 -0
- data/Rakefile +2 -0
- data/lib/EC2.rb +3 -3
- data/lib/EC2/instances.rb +15 -12
- data/test/test_EC2_instances.rb +16 -4
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
=== 0.3.8 2009-04-16
|
2
|
+
* Applied patch, with updated tests to fix issue with base64 encoded user data (rsanheim).
|
3
|
+
* Applied patch, fixing an issue with EU Signature version 2 creation (delano).
|
4
|
+
|
1
5
|
=== 0.3.6 2009-03-02
|
2
6
|
* You can now specify any arbitrary SSL tcp port to connect to (kerryb)
|
3
7
|
* Added rake target to quickly install the gem without docs
|
data/Rakefile
CHANGED
data/lib/EC2.rb
CHANGED
@@ -182,7 +182,7 @@ module EC2
|
|
182
182
|
"Version" => API_VERSION,
|
183
183
|
"Timestamp"=>Time.now.getutc.iso8601} )
|
184
184
|
|
185
|
-
sig = get_aws_auth_param(params, @secret_access_key)
|
185
|
+
sig = get_aws_auth_param(params, @secret_access_key, @server)
|
186
186
|
|
187
187
|
query = params.sort.collect do |param|
|
188
188
|
CGI::escape(param[0]) + "=" + CGI::escape(param[1])
|
@@ -205,8 +205,8 @@ module EC2
|
|
205
205
|
end
|
206
206
|
|
207
207
|
# Set the Authorization header using AWS signed header authentication
|
208
|
-
def get_aws_auth_param(params, secret_access_key)
|
209
|
-
canonical_string = EC2.canonical_string(params)
|
208
|
+
def get_aws_auth_param(params, secret_access_key, server)
|
209
|
+
canonical_string = EC2.canonical_string(params, server)
|
210
210
|
encoded_canonical = EC2.encode(secret_access_key, canonical_string)
|
211
211
|
end
|
212
212
|
|
data/lib/EC2/instances.rb
CHANGED
@@ -90,18 +90,7 @@ module EC2
|
|
90
90
|
raise ArgumentError, ":instance_type must be 'm1.small', 'm1.large', 'm1.xlarge', 'c1.medium', or 'c1.xlarge'" unless options[:instance_type] == "m1.small" || options[:instance_type] == "m1.large" || options[:instance_type] == "m1.xlarge" || options[:instance_type] == "c1.medium" || options[:instance_type] == "c1.xlarge"
|
91
91
|
raise ArgumentError, ":base64_encoded must be 'true' or 'false'" unless options[:base64_encoded] == true || options[:base64_encoded] == false
|
92
92
|
|
93
|
-
|
94
|
-
# as needed. Need for URL Escape + Base64 encoding is determined
|
95
|
-
# by :base64_encoded param.
|
96
|
-
if options[:user_data]
|
97
|
-
if options[:base64_encoded]
|
98
|
-
user_data = options[:user_data]
|
99
|
-
else
|
100
|
-
user_data = Base64.encode64(options[:user_data]).gsub(/\n/,"").strip()
|
101
|
-
end
|
102
|
-
else
|
103
|
-
user_data = nil
|
104
|
-
end
|
93
|
+
user_data = extract_user_data(options)
|
105
94
|
|
106
95
|
params = {
|
107
96
|
"ImageId" => options[:image_id],
|
@@ -119,6 +108,20 @@ module EC2
|
|
119
108
|
return response_generator(:action => "RunInstances", :params => params)
|
120
109
|
|
121
110
|
end
|
111
|
+
|
112
|
+
# If :user_data is passed in then URL escape and Base64 encode it
|
113
|
+
# as needed. Need for URL Escape + Base64 encoding is determined
|
114
|
+
# by :base64_encoded param.
|
115
|
+
def extract_user_data(options)
|
116
|
+
return unless options[:user_data]
|
117
|
+
if options[:user_data]
|
118
|
+
if options[:base64_encoded]
|
119
|
+
Base64.encode64(options[:user_data]).gsub(/\n/,"").strip()
|
120
|
+
else
|
121
|
+
options[:user_data]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
122
125
|
|
123
126
|
|
124
127
|
#Amazon Developer Guide Docs:
|
data/test/test_EC2_instances.rb
CHANGED
@@ -221,28 +221,40 @@ context "EC2 instances " do
|
|
221
221
|
|
222
222
|
|
223
223
|
specify "should be able specify an availability_zone" do
|
224
|
-
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "Placement.AvailabilityZone" => "zone123", "UserData" => "
|
224
|
+
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "Placement.AvailabilityZone" => "zone123", "UserData" => "Zm9v", "AddressingType" => 'public', 'InstanceType' => 'm1.small').
|
225
225
|
returns stub(:body => @run_instances_response_body, :is_a? => true)
|
226
226
|
@ec2.run_instances( :image_id => "ami-60a54009", :min_count => 1, :max_count => 1, :availability_zone => "zone123", :group_id => [], :user_data => "foo", :base64_encoded => true ).should.be.an.instance_of Hash
|
227
227
|
end
|
228
228
|
|
229
229
|
specify "should be able to call run_instances with :user_data and :base64_encoded => true (default is false)" do
|
230
|
-
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "UserData" => "
|
230
|
+
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "UserData" => "Zm9v", "AddressingType" => 'public', 'InstanceType' => 'm1.small').
|
231
231
|
returns stub(:body => @run_instances_response_body, :is_a? => true)
|
232
232
|
@ec2.run_instances( :image_id => "ami-60a54009", :min_count => 1, :max_count => 1, :group_id => [], :user_data => "foo", :base64_encoded => true ).should.be.an.instance_of Hash
|
233
233
|
end
|
234
234
|
|
235
235
|
specify "should be able specify an kernel_id" do
|
236
|
-
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "Placement.AvailabilityZone" => "zone123", "UserData" => "
|
236
|
+
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "Placement.AvailabilityZone" => "zone123", "UserData" => "Zm9v", "AddressingType" => 'public', 'InstanceType' => 'm1.small', 'KernelId' => 'kernfoo').
|
237
237
|
returns stub(:body => @run_instances_response_body, :is_a? => true)
|
238
238
|
@ec2.run_instances( :image_id => "ami-60a54009", :min_count => 1, :max_count => 1, :availability_zone => "zone123", :group_id => [], :user_data => "foo", :base64_encoded => true, :kernel_id => 'kernfoo' ).should.be.an.instance_of Hash
|
239
239
|
end
|
240
240
|
|
241
241
|
specify "should be able to call run_instances with :user_data and :base64_encoded => false" do
|
242
|
-
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "UserData" => "
|
242
|
+
@ec2.stubs(:make_request).with('RunInstances', "ImageId" => "ami-60a54009", "MinCount" => '1', "MaxCount" => '1', "UserData" => "foo", "AddressingType" => 'public', 'InstanceType' => 'm1.small').
|
243
243
|
returns stub(:body => @run_instances_response_body, :is_a? => true)
|
244
244
|
@ec2.run_instances( :image_id => "ami-60a54009", :min_count => 1, :max_count => 1, :group_id => [], :user_data => "foo", :base64_encoded => false ).should.be.an.instance_of Hash
|
245
245
|
end
|
246
|
+
|
247
|
+
specify "should get no user data for when options has no user_data key" do
|
248
|
+
@ec2.extract_user_data({}).should == nil
|
249
|
+
end
|
250
|
+
|
251
|
+
specify "should get plain string user data when options has user_data and no base64 key" do
|
252
|
+
@ec2.extract_user_data({:user_data => "foo\nbar"}).should == "foo\nbar"
|
253
|
+
end
|
254
|
+
|
255
|
+
specify "should strip new lines and base64 encode when options has both user_data and base64" do
|
256
|
+
@ec2.extract_user_data({:user_data => "binary\ndata\nhere\n", :base64_encoded => true}).should == "YmluYXJ5CmRhdGEKaGVyZQo="
|
257
|
+
end
|
246
258
|
|
247
259
|
|
248
260
|
specify "should be able to be described and return the correct Ruby response class" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon-ec2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Glenn Rempe
|
@@ -9,7 +9,7 @@ autorequire: EC2
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-04-16 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|