MovableInkAWS 2.7.5 → 2.7.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/movable_ink/aws/ec2.rb +20 -6
- data/lib/movable_ink/aws/errors.rb +1 -0
- data/lib/movable_ink/version.rb +1 -1
- data/spec/ec2_spec.rb +42 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f6dce584d3446fcb01d1b4ae891bd1d639f4319662c0ffebe0ab80509a04974
|
4
|
+
data.tar.gz: b6535994401231a30f9500393deb8d108271ae37e7224e9a47e608c92bfbe5a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d679722fe0abdb344440a2e1dcabb913be3ba9ff279be3d8523c4e98e0d067e6d360362bc8dce7f71d0afd510eead66ab329702792426d5df9336bb3ca8dca04
|
7
|
+
data.tar.gz: '0238e618656e228fb021ce475303791d99c09c814e5b55f7948478dc78c3657b2a0d355acee87b8dbd5e0ed61997c82c00888970daae64e13c9927bc87a2b795'
|
data/Gemfile.lock
CHANGED
data/lib/movable_ink/aws/ec2.rb
CHANGED
@@ -211,12 +211,26 @@ module MovableInk
|
|
211
211
|
private_ip_addresses(ordered_instances)
|
212
212
|
end
|
213
213
|
|
214
|
-
def redis_by_role(role, port)
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
214
|
+
def redis_by_role(role, port, availability_zones = [])
|
215
|
+
if availability_zones.class != Array
|
216
|
+
raise MovableInk::AWS::Errors::AvailabilityZonesListInvalidError
|
217
|
+
end
|
218
|
+
|
219
|
+
redis_instances = []
|
220
|
+
|
221
|
+
def redis(host, port)
|
222
|
+
{"host" => host, "port" => port}
|
223
|
+
end
|
224
|
+
|
225
|
+
if availability_zones.length > 0
|
226
|
+
availability_zones.each do |az|
|
227
|
+
redis_instances << instance_ip_addresses_by_role(role: role, availability_zone: az).inject([]) { |redii, instance| redii.push(redis(instance, port)) }
|
228
|
+
end
|
229
|
+
else
|
230
|
+
redis_instances << instance_ip_addresses_by_role(role: role).inject([]) { |redii, instance| redii.push(redis(instance, port)) }
|
231
|
+
end
|
232
|
+
|
233
|
+
redis_instances.flatten.shuffle
|
220
234
|
end
|
221
235
|
|
222
236
|
def elastic_ips
|
@@ -8,6 +8,7 @@ module MovableInk
|
|
8
8
|
class InvalidDiscoveryTypeError < StandardError; end
|
9
9
|
class RoleNameRequiredError < StandardError; end
|
10
10
|
class RoleNameInvalidError < StandardError; end
|
11
|
+
class AvailabilityZonesListInvalidError < StandardError; end
|
11
12
|
|
12
13
|
class ExpectedError
|
13
14
|
def initialize(error_class, message_patterns = [])
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/ec2_spec.rb
CHANGED
@@ -589,6 +589,34 @@ describe MovableInk::AWS::EC2 do
|
|
589
589
|
}
|
590
590
|
]])
|
591
591
|
}
|
592
|
+
let(:redis_data_cross_azs) { ec2.stub_data(:describe_instances, reservations: [
|
593
|
+
instances: [
|
594
|
+
{
|
595
|
+
tags: [
|
596
|
+
{
|
597
|
+
key: 'mi:roles',
|
598
|
+
value: 'visitor_redis'
|
599
|
+
}
|
600
|
+
],
|
601
|
+
private_ip_address: '10.0.0.1',
|
602
|
+
placement: {
|
603
|
+
availability_zone: availability_zone
|
604
|
+
}
|
605
|
+
},
|
606
|
+
{
|
607
|
+
tags: [
|
608
|
+
{
|
609
|
+
key: 'mi:roles',
|
610
|
+
value: 'visitor_redis'
|
611
|
+
}
|
612
|
+
],
|
613
|
+
private_ip_address: '10.0.0.2',
|
614
|
+
placement: {
|
615
|
+
availability_zone: 'us-east-1z'
|
616
|
+
}
|
617
|
+
}
|
618
|
+
]])
|
619
|
+
}
|
592
620
|
let(:redii) { [{"host" => '10.0.0.1', "port" => 6379},{"host" => '10.0.0.2', "port" => 6379}] }
|
593
621
|
|
594
622
|
it "should return redis IPs and ports" do
|
@@ -600,6 +628,20 @@ describe MovableInk::AWS::EC2 do
|
|
600
628
|
|
601
629
|
expect(aws.redis_by_role('visitor_redis', port)).to match_array(redii)
|
602
630
|
end
|
631
|
+
|
632
|
+
it "should return redis IPs and ports only from specified AZs" do
|
633
|
+
ec2.stub_responses(:describe_instances, redis_data_cross_azs)
|
634
|
+
allow(aws).to receive(:mi_env).and_return('test')
|
635
|
+
allow(aws).to receive(:availability_zone).and_return(availability_zone)
|
636
|
+
allow(aws).to receive(:my_region).and_return('us-east-1')
|
637
|
+
allow(aws).to receive(:ec2).and_return(ec2)
|
638
|
+
|
639
|
+
expect(aws.redis_by_role('visitor_redis', port, ['us-east-1z'])).to match_array([{"host" => '10.0.0.2', "port" => 6379}])
|
640
|
+
end
|
641
|
+
|
642
|
+
it "should throw exception if specified AZs list isnt array" do
|
643
|
+
expect { aws.redis_by_role('visitor_redis', port, 'us-east-1z') }.to raise_error(MovableInk::AWS::Errors::AvailabilityZonesListInvalidError)
|
644
|
+
end
|
603
645
|
end
|
604
646
|
|
605
647
|
context "elastic IPs" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: MovableInkAWS
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MI SRE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|