import boto3 import sure # noqa # pylint: disable=unused-import from moto import mock_elb, mock_ec2 @mock_elb @mock_ec2 def test_enable_and_disable_availability_zones(): client = boto3.client("elb", region_name="eu-north-1") ec2 = boto3.resource("ec2", region_name="eu-north-1") security_group = ec2.create_security_group(GroupName="sg01", Description="desc") client.create_load_balancer( LoadBalancerName="my-lb", Listeners=[ {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}, {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000}, ], AvailabilityZones=["eu-north-1a", "eu-north-1b"], Scheme="internal", SecurityGroups=[security_group.id], ) describe = client.describe_load_balancers(LoadBalancerNames=["my-lb"])[ "LoadBalancerDescriptions" ][0] describe["AvailabilityZones"].should.equal(["eu-north-1a", "eu-north-1b"]) # enable more az's resp = client.enable_availability_zones_for_load_balancer( LoadBalancerName="my-lb", AvailabilityZones=["eu-north-1c", "eu-north-1d"] ) resp.should.have.key("AvailabilityZones").equals( ["eu-north-1a", "eu-north-1b", "eu-north-1c", "eu-north-1d"] ) describe = client.describe_load_balancers(LoadBalancerNames=["my-lb"])[ "LoadBalancerDescriptions" ][0] describe["AvailabilityZones"].should.equal( ["eu-north-1a", "eu-north-1b", "eu-north-1c", "eu-north-1d"] ) # disable some az's resp = client.disable_availability_zones_for_load_balancer( LoadBalancerName="my-lb", AvailabilityZones=["eu-north-1b", "eu-north-1c"] ) resp.should.have.key("AvailabilityZones").equals(["eu-north-1a", "eu-north-1d"]) describe = client.describe_load_balancers(LoadBalancerNames=["my-lb"])[ "LoadBalancerDescriptions" ][0] describe["AvailabilityZones"].should.equal(["eu-north-1a", "eu-north-1d"])