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