lib/cloudstrap/amazon/ec2.rb in cloudstrap-0.47.2.pre vs lib/cloudstrap/amazon/ec2.rb in cloudstrap-0.47.7.pre
- old
+ new
@@ -421,12 +421,13 @@
region_names.include? region_name
end
Contract None => ArrayOf[Aws::EC2::Types::AvailabilityZone]
def availability_zones!
- @availability_zones = call_api(:describe_availability_zones)
- .availability_zones.take(config.maximum_availability_zones)
+ @availability_zones = at_least(config.minimum_availability_zones)
+ .(call_api(:describe_availability_zones).availability_zones)
+ .take(config.maximum_availability_zones)
end
Contract None => ArrayOf[Aws::EC2::Types::AvailabilityZone]
def availability_zones
@availability_zones ||= availability_zones!
@@ -436,9 +437,14 @@
def availability_zone_names
availability_zones.map(&:zone_name)
end
private
+
+ Contract Maybe[Pos] => Func[Enumerable => Enumerable]
+ def at_least(minimum = 0)
+ ->(list) { list.size >= minimum ? list : list.cycle }
+ end
def client
Aws::EC2::Client
end
end