elasticity 6.0.12 → 6.0.13
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/HISTORY.md +6 -2
- data/lib/elasticity/aws_session.rb +12 -1
- data/lib/elasticity/job_flow.rb +4 -1
- data/lib/elasticity/version.rb +1 -1
- data/spec/lib/elasticity/aws_request_v4_spec.rb +1 -1
- data/spec/lib/elasticity/aws_session_spec.rb +21 -3
- data/spec/lib/elasticity/job_flow_integration_spec.rb +3 -2
- data/spec/lib/elasticity/job_flow_spec.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 790344a0151805b2c9d98ab1a5550da16098a618
|
4
|
+
data.tar.gz: ac2ca4a93b59437f4fdb904bc5d7985c3914c4e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 027b587b86c8065a88b6cf614a646677c5ed36c317a88ce90b43c22bbc52ea39fe8b2e4cb12f77b02694a5992261b744721b872dfbe0650610c439063aeb5de6
|
7
|
+
data.tar.gz: d54e84b75052fcf456cfb4a98f8532e7328b45479551064a3cacbd6d0eeaa4356447accc85ff67ffd613d5a1246796a6a260317b5acd1afb4ff9ea19bea54641
|
data/.travis.yml
CHANGED
data/HISTORY.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 6.0.13 - January 17, 2019
|
2
|
+
|
3
|
+
- Including PR [#141](https://github.com/rslifka/elasticity/pull/140) - "Add the ability to customize timeouts ". Thank you [@BenFradet ](https://github.com/BenFradet )!
|
4
|
+
|
1
5
|
## 6.0.12 - February 7, 2017
|
2
6
|
|
3
7
|
- Including PR [#140](https://github.com/rslifka/elasticity/pull/140) - "Update fog". Thank you [@BenFradet ](https://github.com/BenFradet )!
|
@@ -61,7 +65,7 @@ On the API side, all of the newer commands take `cluster_id` rather than `job_fl
|
|
61
65
|
|
62
66
|
They've also begun deprecating APIs, starting with `DescribeJobFlows`. Given the sweeping set of changes, a major release was deemed appropriate.
|
63
67
|
|
64
|
-
- [#88](https://github.com/rslifka/elasticity/issues/88) - Removed support for deprecated `DescribeJobFlows`.
|
68
|
+
- [#88](https://github.com/rslifka/elasticity/issues/88) - Removed support for deprecated `DescribeJobFlows`.
|
65
69
|
- [#89](https://github.com/rslifka/elasticity/issues/89) - Add support for `AddTags`.
|
66
70
|
- [#90](https://github.com/rslifka/elasticity/issues/90) - Add support for `RemoveTags`.
|
67
71
|
- [#91](https://github.com/rslifka/elasticity/issues/91) - Add support for `SetVisibleToAllUsers`.
|
@@ -232,7 +236,7 @@ They've also begun deprecating APIs, starting with `DescribeJobFlows`. Given th
|
|
232
236
|
## 2.1 - July 7, 2012
|
233
237
|
|
234
238
|
+ TASK instance group support added.
|
235
|
-
+ SPOT instance support added for all instance group types.
|
239
|
+
+ SPOT instance support added for all instance group types.
|
236
240
|
+ Removed name of jar from default name of ```CustomJarStep``` since the AWS UI already calls it out in a separate column when looking at job flow steps.
|
237
241
|
|
238
242
|
## 2.0 - June 26, 2012
|
@@ -8,10 +8,12 @@ module Elasticity
|
|
8
8
|
|
9
9
|
attr_reader :host
|
10
10
|
attr_reader :region
|
11
|
+
attr_reader :timeout
|
11
12
|
|
12
13
|
# Supported values for options:
|
13
14
|
# :region - AWS region (e.g. us-west-1)
|
14
15
|
# :secure - true or false, default true.
|
16
|
+
# :timeout - the timeout, in seconds, when making a request to EMR, default 60.
|
15
17
|
def initialize(options={})
|
16
18
|
# There is a cryptic error if this isn't set
|
17
19
|
if options.has_key?(:region) && options[:region] == nil
|
@@ -21,12 +23,21 @@ module Elasticity
|
|
21
23
|
@region = options[:region]
|
22
24
|
|
23
25
|
@host = "elasticmapreduce.#@region.amazonaws.com"
|
26
|
+
|
27
|
+
options[:timeout] = 60 unless options[:timeout]
|
28
|
+
@timeout = options[:timeout]
|
24
29
|
end
|
25
30
|
|
26
31
|
def submit(ruby_service_hash)
|
27
32
|
aws_request = AwsRequestV4.new(self, ruby_service_hash)
|
28
33
|
begin
|
29
|
-
RestClient.
|
34
|
+
RestClient.execute(
|
35
|
+
:method => :post,
|
36
|
+
:url => aws_request.url,
|
37
|
+
:payload => aws_request.payload,
|
38
|
+
:headers => aws_request.headers,
|
39
|
+
:timeout => @timeout
|
40
|
+
)
|
30
41
|
rescue RestClient::BadRequest => e
|
31
42
|
type, message = AwsSession.parse_error_response(e.http_body)
|
32
43
|
raise ThrottlingException, message if type == 'ThrottlingException'
|
data/lib/elasticity/job_flow.rb
CHANGED
@@ -33,6 +33,7 @@ module Elasticity
|
|
33
33
|
attr_accessor :additional_info
|
34
34
|
attr_accessor :additional_master_security_groups
|
35
35
|
attr_accessor :additional_slave_security_groups
|
36
|
+
attr_accessor :timeout
|
36
37
|
|
37
38
|
def initialize
|
38
39
|
@action_on_failure = 'TERMINATE_JOB_FLOW'
|
@@ -55,6 +56,8 @@ module Elasticity
|
|
55
56
|
@instance_count = 2
|
56
57
|
@master_instance_type = 'm1.small'
|
57
58
|
@slave_instance_type = 'm1.small'
|
59
|
+
|
60
|
+
@timeout = 60
|
58
61
|
end
|
59
62
|
|
60
63
|
def self.from_jobflow_id(jobflow_id, region = 'us-east-1')
|
@@ -207,7 +210,7 @@ module Elasticity
|
|
207
210
|
end
|
208
211
|
|
209
212
|
def emr
|
210
|
-
@emr ||= Elasticity::EMR.new(:region => @region)
|
213
|
+
@emr ||= Elasticity::EMR.new(:region => @region, :timeout => @timeout)
|
211
214
|
end
|
212
215
|
|
213
216
|
def is_jobflow_running?
|
data/lib/elasticity/version.rb
CHANGED
@@ -144,7 +144,7 @@ describe Elasticity::AwsRequestV4 do
|
|
144
144
|
|
145
145
|
describe '.aws_v4_signature' do
|
146
146
|
it 'should create the proper signature' do
|
147
|
-
subject.send(:aws_v4_signature).should == '
|
147
|
+
subject.send(:aws_v4_signature).should == '86798537f9f4310015aac337d493c4b4abb5113109e04a9898c845d09d2d8bdf'
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
@@ -35,6 +35,18 @@ describe Elasticity::AwsSession do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
context 'when :timeout is specified' do
|
39
|
+
it 'should be assigned' do
|
40
|
+
Elasticity::AwsSession.new(:region => 'TEST_REGION', :timeout => 120).timeout.should == 120
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when :timeout is not specified' do
|
45
|
+
it 'should be 60' do
|
46
|
+
Elasticity::AwsSession.new(:region => 'TEST_REGION').timeout.should == 60
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
38
50
|
end
|
39
51
|
|
40
52
|
describe '#host' do
|
@@ -66,7 +78,13 @@ describe Elasticity::AwsSession do
|
|
66
78
|
@request.should_receive(:headers).and_return('TEST_HEADERS')
|
67
79
|
|
68
80
|
Elasticity::AwsRequestV4.should_receive(:new).with(subject, {}).and_return(@request)
|
69
|
-
RestClient.should_receive(:
|
81
|
+
RestClient.should_receive(:execute).with(
|
82
|
+
:method => :post,
|
83
|
+
:url => 'TEST_URL',
|
84
|
+
:payload => 'TEST_PAYLOAD',
|
85
|
+
:headers => 'TEST_HEADERS',
|
86
|
+
:timeout => 60
|
87
|
+
)
|
70
88
|
end
|
71
89
|
|
72
90
|
it 'should POST a properly assembled request' do
|
@@ -89,7 +107,7 @@ describe Elasticity::AwsSession do
|
|
89
107
|
end
|
90
108
|
|
91
109
|
it 'should raise an Argument error with the body of the error' do
|
92
|
-
RestClient.should_receive(:
|
110
|
+
RestClient.should_receive(:execute).and_raise(error)
|
93
111
|
expect {
|
94
112
|
subject.submit({})
|
95
113
|
}.to raise_error(ArgumentError, "AWS EMR API Error (#{error_type}): #{error_message}")
|
@@ -98,7 +116,7 @@ describe Elasticity::AwsSession do
|
|
98
116
|
context 'EMR API rate limit hit' do
|
99
117
|
let(:error_type) { 'ThrottlingException' }
|
100
118
|
it 'should raise a Throttling error with the body of the error' do
|
101
|
-
RestClient.should_receive(:
|
119
|
+
RestClient.should_receive(:execute).and_raise(error)
|
102
120
|
expect {
|
103
121
|
subject.submit({})
|
104
122
|
}.to raise_error(Elasticity::ThrottlingException, "AWS EMR API Error (#{error_type}): #{error_message}")
|
@@ -3,7 +3,8 @@ describe 'Elasticity::JobFlow Integration Examples' do
|
|
3
3
|
let(:emr) { double('Elasticity::EMR') }
|
4
4
|
|
5
5
|
before do
|
6
|
-
Elasticity::EMR.should_receive(:new).with(:region => 'us-west-1')
|
6
|
+
Elasticity::EMR.should_receive(:new).with(:region => 'us-west-1', :timeout => 60)
|
7
|
+
.and_return(emr)
|
7
8
|
end
|
8
9
|
|
9
10
|
describe 'Hive' do
|
@@ -243,4 +244,4 @@ describe 'Elasticity::JobFlow Integration Examples' do
|
|
243
244
|
|
244
245
|
end
|
245
246
|
|
246
|
-
end
|
247
|
+
end
|
@@ -30,6 +30,7 @@ describe Elasticity::JobFlow do
|
|
30
30
|
expect(subject.jobflow_id).to eql(nil)
|
31
31
|
expect(subject.additional_master_security_groups).to eql(nil)
|
32
32
|
expect(subject.additional_slave_security_groups).to eql(nil)
|
33
|
+
expect(subject.timeout).to eql(60)
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
@@ -708,7 +709,7 @@ describe Elasticity::JobFlow do
|
|
708
709
|
let(:emr) { double('Elasticity::EMR', :run_job_flow => 'JOBFLOW_ID') }
|
709
710
|
|
710
711
|
it 'should run the job with the supplied EMR credentials' do
|
711
|
-
Elasticity::EMR.stub(:new).with(:region => 'us-east-1').and_return(emr)
|
712
|
+
Elasticity::EMR.stub(:new).with(:region => 'us-east-1', :timeout => 60).and_return(emr)
|
712
713
|
emr.should_receive(:run_job_flow)
|
713
714
|
jobflow_with_steps.run
|
714
715
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Slifka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|