| 
									
										
										
										
											2014-08-27 11:17:06 -04:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | import boto3 | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | import botocore | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | import boto | 
					
						
							| 
									
										
										
										
											2014-11-16 18:00:04 -05:00
										 |  |  | import boto.ec2.elb | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | from boto.ec2.elb import HealthCheck | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | from boto.ec2.elb.attributes import ( | 
					
						
							|  |  |  |     ConnectionSettingAttribute, | 
					
						
							|  |  |  |     ConnectionDrainingAttribute, | 
					
						
							|  |  |  |     AccessLogAttribute, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2017-06-12 16:42:42 -07:00
										 |  |  | from botocore.exceptions import ClientError | 
					
						
							| 
									
										
										
										
											2015-12-13 22:41:17 -05:00
										 |  |  | from boto.exception import BotoServerError | 
					
						
							| 
									
										
										
										
											2017-06-12 16:42:42 -07:00
										 |  |  | from nose.tools import assert_raises | 
					
						
							| 
									
										
										
										
											2013-08-03 17:21:25 -04:00
										 |  |  | import sure  # noqa | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | from moto import mock_elb, mock_ec2, mock_elb_deprecated, mock_ec2_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_create_load_balancer(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     ec2 = boto.connect_ec2('the_key', 'the_secret') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     security_group = ec2.create_security_group('sg-abc987', 'description') | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     conn.create_load_balancer('my-lb', zones, ports, scheme='internal', security_groups=[security_group.id]) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancer = balancers[0] | 
					
						
							|  |  |  |     balancer.name.should.equal("my-lb") | 
					
						
							| 
									
										
										
										
											2015-12-03 11:25:04 -05:00
										 |  |  |     balancer.scheme.should.equal("internal") | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     list(balancer.security_groups).should.equal([security_group.id]) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     set(balancer.availability_zones).should.equal( | 
					
						
							|  |  |  |         set(['us-east-1a', 'us-east-1b'])) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  |     listener1 = balancer.listeners[0] | 
					
						
							|  |  |  |     listener1.load_balancer_port.should.equal(80) | 
					
						
							|  |  |  |     listener1.instance_port.should.equal(8080) | 
					
						
							|  |  |  |     listener1.protocol.should.equal("HTTP") | 
					
						
							|  |  |  |     listener2 = balancer.listeners[1] | 
					
						
							|  |  |  |     listener2.load_balancer_port.should.equal(443) | 
					
						
							|  |  |  |     listener2.instance_port.should.equal(8443) | 
					
						
							|  |  |  |     listener2.protocol.should.equal("TCP") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-12-13 22:41:17 -05:00
										 |  |  | def test_getting_missing_elb(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.get_all_load_balancers.when.called_with( | 
					
						
							|  |  |  |         load_balancer_names='aaa').should.throw(BotoServerError) | 
					
						
							| 
									
										
										
										
											2015-12-13 22:41:17 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-11-16 18:00:04 -05:00
										 |  |  | def test_create_elb_in_multiple_region(): | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     west1_conn = boto.ec2.elb.connect_to_region("us-west-1") | 
					
						
							|  |  |  |     west1_conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     west2_conn = boto.ec2.elb.connect_to_region("us-west-2") | 
					
						
							|  |  |  |     west2_conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     list(west1_conn.get_all_load_balancers()).should.have.length_of(1) | 
					
						
							|  |  |  |     list(west2_conn.get_all_load_balancers()).should.have.length_of(1) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-05-20 19:42:58 +00:00
										 |  |  | def test_create_load_balancer_with_certificate(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a'] | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     ports = [ | 
					
						
							|  |  |  |         (443, 8443, 'https', 'arn:aws:iam:123456789012:server-certificate/test-cert')] | 
					
						
							| 
									
										
										
										
											2015-05-20 19:42:58 +00:00
										 |  |  |     conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancer = balancers[0] | 
					
						
							|  |  |  |     balancer.name.should.equal("my-lb") | 
					
						
							| 
									
										
										
										
											2015-12-03 11:25:04 -05:00
										 |  |  |     balancer.scheme.should.equal("internet-facing") | 
					
						
							| 
									
										
										
										
											2015-05-20 19:42:58 +00:00
										 |  |  |     set(balancer.availability_zones).should.equal(set(['us-east-1a'])) | 
					
						
							|  |  |  |     listener = balancer.listeners[0] | 
					
						
							|  |  |  |     listener.load_balancer_port.should.equal(443) | 
					
						
							|  |  |  |     listener.instance_port.should.equal(8443) | 
					
						
							|  |  |  |     listener.protocol.should.equal("HTTPS") | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     listener.ssl_certificate_id.should.equal( | 
					
						
							|  |  |  |         'arn:aws:iam:123456789012:server-certificate/test-cert') | 
					
						
							| 
									
										
										
										
											2015-05-20 19:42:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-16 18:00:04 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_create_and_delete_boto3_support(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(client.describe_load_balancers()[ | 
					
						
							|  |  |  |          'LoadBalancerDescriptions']).should.have.length_of(1) | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.delete_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb' | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(client.describe_load_balancers()[ | 
					
						
							|  |  |  |          'LoadBalancerDescriptions']).should.have.length_of(0) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-12 16:42:42 -07:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_create_load_balancer_with_no_listeners_defined(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with assert_raises(ClientError): | 
					
						
							|  |  |  |         client.create_load_balancer( | 
					
						
							|  |  |  |             LoadBalancerName='my-lb', | 
					
						
							|  |  |  |             Listeners=[], | 
					
						
							|  |  |  |             AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-10 21:58:42 -04:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_describe_paginated_balancers(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for i in range(51): | 
					
						
							|  |  |  |         client.create_load_balancer( | 
					
						
							|  |  |  |             LoadBalancerName='my-lb%d' % i, | 
					
						
							|  |  |  |             Listeners=[ | 
					
						
							|  |  |  |                 {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							|  |  |  |             AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     resp = client.describe_load_balancers() | 
					
						
							|  |  |  |     resp['LoadBalancerDescriptions'].should.have.length_of(50) | 
					
						
							|  |  |  |     resp['NextMarker'].should.equal(resp['LoadBalancerDescriptions'][-1]['LoadBalancerName']) | 
					
						
							|  |  |  |     resp2 = client.describe_load_balancers(Marker=resp['NextMarker']) | 
					
						
							|  |  |  |     resp2['LoadBalancerDescriptions'].should.have.length_of(1) | 
					
						
							|  |  |  |     assert 'NextToken' not in resp2.keys() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 12:20:01 -07:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  | def test_apply_security_groups_to_load_balancer(): | 
					
						
							| 
									
										
										
										
											2017-07-19 12:20:01 -07:00
										 |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     ec2 = boto3.resource('ec2', region_name='us-east-1') | 
					
						
							| 
									
										
										
										
											2017-07-19 12:20:01 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock='10.0.0.0/16') | 
					
						
							|  |  |  |     security_group = ec2.create_security_group( | 
					
						
							|  |  |  |         GroupName='sg01', Description='Test security group sg01', VpcId=vpc.id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							|  |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.apply_security_groups_to_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         SecurityGroups=[security_group.id]) | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 12:20:01 -07:00
										 |  |  |     assert response['SecurityGroups'] == [security_group.id] | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     assert balancer['SecurityGroups'] == [security_group.id] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 16:01:00 -07:00
										 |  |  |     # Using a not-real security group raises an error | 
					
						
							| 
									
										
										
										
											2017-07-19 15:58:49 -07:00
										 |  |  |     with assert_raises(ClientError) as error: | 
					
						
							|  |  |  |         response = client.apply_security_groups_to_load_balancer( | 
					
						
							|  |  |  |             LoadBalancerName='my-lb', | 
					
						
							|  |  |  |             SecurityGroups=['not-really-a-security-group']) | 
					
						
							|  |  |  |     assert "One or more of the specified security groups do not exist." in str(error.exception) | 
					
						
							| 
									
										
										
										
											2017-07-19 12:20:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-10 21:58:42 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-07-18 17:31:57 -07:00
										 |  |  | def test_add_listener(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http')] | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  |     new_listener = (443, 8443, 'tcp') | 
					
						
							|  |  |  |     conn.create_load_balancer_listeners('my-lb', [new_listener]) | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancer = balancers[0] | 
					
						
							|  |  |  |     listener1 = balancer.listeners[0] | 
					
						
							|  |  |  |     listener1.load_balancer_port.should.equal(80) | 
					
						
							|  |  |  |     listener1.instance_port.should.equal(8080) | 
					
						
							|  |  |  |     listener1.protocol.should.equal("HTTP") | 
					
						
							|  |  |  |     listener2 = balancer.listeners[1] | 
					
						
							|  |  |  |     listener2.load_balancer_port.should.equal(443) | 
					
						
							|  |  |  |     listener2.instance_port.should.equal(8443) | 
					
						
							|  |  |  |     listener2.protocol.should.equal("TCP") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-07-18 17:31:57 -07:00
										 |  |  | def test_delete_listener(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  |     conn.delete_load_balancer_listeners('my-lb', [443]) | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancer = balancers[0] | 
					
						
							|  |  |  |     listener1 = balancer.listeners[0] | 
					
						
							|  |  |  |     listener1.load_balancer_port.should.equal(80) | 
					
						
							|  |  |  |     listener1.instance_port.should.equal(8080) | 
					
						
							|  |  |  |     listener1.protocol.should.equal("HTTP") | 
					
						
							|  |  |  |     balancer.listeners.should.have.length_of(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_create_and_delete_listener_boto3_support(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[{'Protocol': 'http', | 
					
						
							|  |  |  |                     'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(client.describe_load_balancers()[ | 
					
						
							|  |  |  |          'LoadBalancerDescriptions']).should.have.length_of(1) | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer_listeners( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 443, 'InstancePort': 8443}] | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |     ) | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     list(balancer['ListenerDescriptions']).should.have.length_of(2) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     balancer['ListenerDescriptions'][0][ | 
					
						
							|  |  |  |         'Listener']['Protocol'].should.equal('HTTP') | 
					
						
							|  |  |  |     balancer['ListenerDescriptions'][0]['Listener'][ | 
					
						
							|  |  |  |         'LoadBalancerPort'].should.equal(80) | 
					
						
							|  |  |  |     balancer['ListenerDescriptions'][0]['Listener'][ | 
					
						
							|  |  |  |         'InstancePort'].should.equal(8080) | 
					
						
							|  |  |  |     balancer['ListenerDescriptions'][1][ | 
					
						
							|  |  |  |         'Listener']['Protocol'].should.equal('TCP') | 
					
						
							|  |  |  |     balancer['ListenerDescriptions'][1]['Listener'][ | 
					
						
							|  |  |  |         'LoadBalancerPort'].should.equal(443) | 
					
						
							|  |  |  |     balancer['ListenerDescriptions'][1]['Listener'][ | 
					
						
							|  |  |  |         'InstancePort'].should.equal(8443) | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-06 21:52:01 -07:00
										 |  |  |     # Creating this listener with an conflicting definition throws error | 
					
						
							|  |  |  |     with assert_raises(ClientError): | 
					
						
							|  |  |  |         client.create_load_balancer_listeners( | 
					
						
							|  |  |  |             LoadBalancerName='my-lb', | 
					
						
							|  |  |  |             Listeners=[ | 
					
						
							|  |  |  |                 {'Protocol': 'tcp', 'LoadBalancerPort': 443, 'InstancePort': 1234}] | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-06 21:29:18 -07:00
										 |  |  |     client.delete_load_balancer_listeners( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         LoadBalancerPorts=[443]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     list(balancer['ListenerDescriptions']).should.have.length_of(1) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2014-07-18 17:31:57 -07:00
										 |  |  | def test_set_sslcertificate(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(443, 8443, 'tcp')] | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  |     conn.set_lb_listener_SSL_certificate('my-lb', '443', 'arn:certificate') | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancer = balancers[0] | 
					
						
							|  |  |  |     listener1 = balancer.listeners[0] | 
					
						
							|  |  |  |     listener1.load_balancer_port.should.equal(443) | 
					
						
							|  |  |  |     listener1.instance_port.should.equal(8443) | 
					
						
							|  |  |  |     listener1.protocol.should.equal("TCP") | 
					
						
							|  |  |  |     listener1.ssl_certificate_id.should.equal("arn:certificate") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_get_load_balancers_by_name(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							| 
									
										
										
										
											2013-08-03 17:21:25 -04:00
										 |  |  |     conn.create_load_balancer('my-lb1', zones, ports) | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb2', zones, ports) | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb3', zones, ports) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     conn.get_all_load_balancers().should.have.length_of(3) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.get_all_load_balancers( | 
					
						
							|  |  |  |         load_balancer_names=['my-lb1']).should.have.length_of(1) | 
					
						
							|  |  |  |     conn.get_all_load_balancers( | 
					
						
							|  |  |  |         load_balancer_names=['my-lb1', 'my-lb2']).should.have.length_of(2) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_delete_load_balancer(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     zones = ['us-east-1a'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							| 
									
										
										
										
											2013-08-03 17:21:25 -04:00
										 |  |  |     conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancers.should.have.length_of(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.delete_load_balancer("my-lb") | 
					
						
							|  |  |  |     balancers = conn.get_all_load_balancers() | 
					
						
							|  |  |  |     balancers.should.have.length_of(0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_create_health_check(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     hc = HealthCheck( | 
					
						
							|  |  |  |         interval=20, | 
					
						
							|  |  |  |         healthy_threshold=3, | 
					
						
							|  |  |  |         unhealthy_threshold=5, | 
					
						
							|  |  |  |         target='HTTP:8080/health', | 
					
						
							|  |  |  |         timeout=23, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-16 21:24:32 -04:00
										 |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  |     lb.configure_health_check(hc) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     health_check = balancer.health_check | 
					
						
							|  |  |  |     health_check.interval.should.equal(20) | 
					
						
							|  |  |  |     health_check.healthy_threshold.should.equal(3) | 
					
						
							|  |  |  |     health_check.unhealthy_threshold.should.equal(5) | 
					
						
							|  |  |  |     health_check.target.should.equal('HTTP:8080/health') | 
					
						
							|  |  |  |     health_check.timeout.should.equal(23) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_create_health_check_boto3(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[{'Protocol': 'http', | 
					
						
							|  |  |  |                     'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     client.configure_health_check( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         HealthCheck={ | 
					
						
							|  |  |  |             'Target': 'HTTP:8080/health', | 
					
						
							|  |  |  |             'Interval': 20, | 
					
						
							|  |  |  |             'Timeout': 23, | 
					
						
							|  |  |  |             'HealthyThreshold': 3, | 
					
						
							|  |  |  |             'UnhealthyThreshold': 5 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     balancer['HealthCheck']['Target'].should.equal('HTTP:8080/health') | 
					
						
							|  |  |  |     balancer['HealthCheck']['Interval'].should.equal(20) | 
					
						
							|  |  |  |     balancer['HealthCheck']['Timeout'].should.equal(23) | 
					
						
							|  |  |  |     balancer['HealthCheck']['HealthyThreshold'].should.equal(3) | 
					
						
							|  |  |  |     balancer['HealthCheck']['UnhealthyThreshold'].should.equal(5) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							|  |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_register_instances(): | 
					
						
							|  |  |  |     ec2_conn = boto.connect_ec2() | 
					
						
							|  |  |  |     reservation = ec2_conn.run_instances('ami-1234abcd', 2) | 
					
						
							|  |  |  |     instance_id1 = reservation.instances[0].id | 
					
						
							|  |  |  |     instance_id2 = reservation.instances[1].id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							| 
									
										
										
										
											2013-09-16 21:24:32 -04:00
										 |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lb.register_instances([instance_id1, instance_id2]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     instance_ids = [instance.id for instance in balancer.instances] | 
					
						
							|  |  |  |     set(instance_ids).should.equal(set([instance_id1, instance_id2])) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | @mock_ec2 | 
					
						
							|  |  |  | @mock_elb | 
					
						
							|  |  |  | def test_register_instances_boto3(): | 
					
						
							|  |  |  |     ec2 = boto3.resource('ec2', region_name='us-east-1') | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     response = ec2.create_instances( | 
					
						
							|  |  |  |         ImageId='ami-1234abcd', MinCount=2, MaxCount=2) | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |     instance_id1 = response[0].id | 
					
						
							|  |  |  |     instance_id2 = response[1].id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[{'Protocol': 'http', | 
					
						
							|  |  |  |                     'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     client.register_instances_with_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         Instances=[ | 
					
						
							|  |  |  |             {'InstanceId': instance_id1}, | 
					
						
							|  |  |  |             {'InstanceId': instance_id2} | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     instance_ids = [instance['InstanceId'] | 
					
						
							|  |  |  |                     for instance in balancer['Instances']] | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |     set(instance_ids).should.equal(set([instance_id1, instance_id2])) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							|  |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | def test_deregister_instances(): | 
					
						
							|  |  |  |     ec2_conn = boto.connect_ec2() | 
					
						
							|  |  |  |     reservation = ec2_conn.run_instances('ami-1234abcd', 2) | 
					
						
							|  |  |  |     instance_id1 = reservation.instances[0].id | 
					
						
							|  |  |  |     instance_id2 = reservation.instances[1].id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							| 
									
										
										
										
											2013-09-16 21:24:32 -04:00
										 |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							| 
									
										
										
										
											2013-07-22 22:50:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lb.register_instances([instance_id1, instance_id2]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     balancer.instances.should.have.length_of(2) | 
					
						
							|  |  |  |     balancer.deregister_instances([instance_id1]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer.instances.should.have.length_of(1) | 
					
						
							|  |  |  |     balancer.instances[0].id.should.equal(instance_id2) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  | @mock_ec2 | 
					
						
							|  |  |  | @mock_elb | 
					
						
							|  |  |  | def test_deregister_instances_boto3(): | 
					
						
							|  |  |  |     ec2 = boto3.resource('ec2', region_name='us-east-1') | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     response = ec2.create_instances( | 
					
						
							|  |  |  |         ImageId='ami-1234abcd', MinCount=2, MaxCount=2) | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |     instance_id1 = response[0].id | 
					
						
							|  |  |  |     instance_id2 = response[1].id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[{'Protocol': 'http', | 
					
						
							|  |  |  |                     'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-08-24 15:07:14 +00:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     client.register_instances_with_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         Instances=[ | 
					
						
							|  |  |  |             {'InstanceId': instance_id1}, | 
					
						
							|  |  |  |             {'InstanceId': instance_id2} | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     balancer['Instances'].should.have.length_of(2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.deregister_instances_from_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         Instances=[ | 
					
						
							|  |  |  |             {'InstanceId': instance_id1} | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     balancer = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     balancer['Instances'].should.have.length_of(1) | 
					
						
							|  |  |  |     balancer['Instances'][0]['InstanceId'].should.equal(instance_id2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | def test_default_attributes(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     attributes = lb.get_attributes() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     attributes.cross_zone_load_balancing.enabled.should.be.false | 
					
						
							|  |  |  |     attributes.connection_draining.enabled.should.be.false | 
					
						
							|  |  |  |     attributes.access_log.enabled.should.be.false | 
					
						
							|  |  |  |     attributes.connecting_settings.idle_timeout.should.equal(60) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | def test_cross_zone_load_balancing_attribute(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.modify_lb_attribute("my-lb", "CrossZoneLoadBalancing", True) | 
					
						
							|  |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.cross_zone_load_balancing.enabled.should.be.true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.modify_lb_attribute("my-lb", "CrossZoneLoadBalancing", False) | 
					
						
							|  |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.cross_zone_load_balancing.enabled.should.be.false | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | def test_connection_draining_attribute(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     connection_draining = ConnectionDrainingAttribute() | 
					
						
							|  |  |  |     connection_draining.enabled = True | 
					
						
							|  |  |  |     connection_draining.timeout = 60 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.modify_lb_attribute( | 
					
						
							|  |  |  |         "my-lb", "ConnectionDraining", connection_draining) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.connection_draining.enabled.should.be.true | 
					
						
							|  |  |  |     attributes.connection_draining.timeout.should.equal(60) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     connection_draining.timeout = 30 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.modify_lb_attribute( | 
					
						
							|  |  |  |         "my-lb", "ConnectionDraining", connection_draining) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.connection_draining.timeout.should.equal(30) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     connection_draining.enabled = False | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.modify_lb_attribute( | 
					
						
							|  |  |  |         "my-lb", "ConnectionDraining", connection_draining) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.connection_draining.enabled.should.be.false | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | def test_access_log_attribute(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     access_log = AccessLogAttribute() | 
					
						
							|  |  |  |     access_log.enabled = True | 
					
						
							|  |  |  |     access_log.s3_bucket_name = 'bucket' | 
					
						
							|  |  |  |     access_log.s3_bucket_prefix = 'prefix' | 
					
						
							|  |  |  |     access_log.emit_interval = 60 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.modify_lb_attribute("my-lb", "AccessLog", access_log) | 
					
						
							|  |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.access_log.enabled.should.be.true | 
					
						
							|  |  |  |     attributes.access_log.s3_bucket_name.should.equal("bucket") | 
					
						
							|  |  |  |     attributes.access_log.s3_bucket_prefix.should.equal("prefix") | 
					
						
							|  |  |  |     attributes.access_log.emit_interval.should.equal(60) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     access_log.enabled = False | 
					
						
							|  |  |  |     conn.modify_lb_attribute("my-lb", "AccessLog", access_log) | 
					
						
							|  |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.access_log.enabled.should.be.false | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | def test_connection_settings_attribute(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     connection_settings = ConnectionSettingAttribute(conn) | 
					
						
							|  |  |  |     connection_settings.idle_timeout = 120 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.modify_lb_attribute( | 
					
						
							|  |  |  |         "my-lb", "ConnectingSettings", connection_settings) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.connecting_settings.idle_timeout.should.equal(120) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     connection_settings.idle_timeout = 60 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.modify_lb_attribute( | 
					
						
							|  |  |  |         "my-lb", "ConnectingSettings", connection_settings) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  |     attributes = lb.get_attributes(force=True) | 
					
						
							|  |  |  |     attributes.connecting_settings.idle_timeout.should.equal(60) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_create_lb_cookie_stickiness_policy(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     cookie_expiration_period = 60 | 
					
						
							|  |  |  |     policy_name = "LBCookieStickinessPolicy" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb.create_cookie_stickiness_policy(cookie_expiration_period, policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     # There appears to be a quirk about boto, whereby it returns a unicode | 
					
						
							|  |  |  |     # string for cookie_expiration_period, despite being stated in | 
					
						
							| 
									
										
										
										
											2015-07-16 18:23:13 -07:00
										 |  |  |     # documentation to be a long numeric. | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  |     # | 
					
						
							| 
									
										
										
										
											2015-07-16 18:23:13 -07:00
										 |  |  |     # To work around that, this value is converted to an int and checked. | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     cookie_expiration_period_response_str = lb.policies.lb_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].cookie_expiration_period | 
					
						
							|  |  |  |     int(cookie_expiration_period_response_str).should.equal( | 
					
						
							|  |  |  |         cookie_expiration_period) | 
					
						
							|  |  |  |     lb.policies.lb_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].policy_name.should.equal(policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_create_lb_cookie_stickiness_policy_no_expiry(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     policy_name = "LBCookieStickinessPolicy" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb.create_cookie_stickiness_policy(None, policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     lb.policies.lb_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].cookie_expiration_period.should.be.none | 
					
						
							|  |  |  |     lb.policies.lb_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].policy_name.should.equal(policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_create_app_cookie_stickiness_policy(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     cookie_name = "my-stickiness-policy" | 
					
						
							|  |  |  |     policy_name = "AppCookieStickinessPolicy" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb.create_app_cookie_stickiness_policy(cookie_name, policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     lb.policies.app_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].cookie_name.should.equal(cookie_name) | 
					
						
							|  |  |  |     lb.policies.app_cookie_stickiness_policies[ | 
					
						
							|  |  |  |         0].policy_name.should.equal(policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_create_lb_policy(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     policy_name = "ProxyPolicy" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     lb.create_lb_policy(policy_name, 'ProxyProtocolPolicyType', { | 
					
						
							|  |  |  |                         'ProxyProtocol': True}) | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     lb.policies.other_policies[0].policy_name.should.equal(policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_set_policies_of_listener(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     listener_port = 80 | 
					
						
							|  |  |  |     policy_name = "my-stickiness-policy" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # boto docs currently state that zero or one policy may be associated | 
					
						
							|  |  |  |     # with a given listener | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # in a real flow, it is necessary first to create a policy, | 
					
						
							|  |  |  |     # then to set that policy to the listener | 
					
						
							|  |  |  |     lb.create_cookie_stickiness_policy(None, policy_name) | 
					
						
							|  |  |  |     lb.set_policies_of_listener(listener_port, [policy_name]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     listener = lb.listeners[0] | 
					
						
							|  |  |  |     listener.load_balancer_port.should.equal(listener_port) | 
					
						
							|  |  |  |     # by contrast to a backend, a listener stores only policy name strings | 
					
						
							|  |  |  |     listener.policy_names[0].should.equal(policy_name) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  | def test_set_policies_of_backend_server(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', [], ports) | 
					
						
							|  |  |  |     instance_port = 8080 | 
					
						
							|  |  |  |     policy_name = "ProxyPolicy" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # in a real flow, it is necessary first to create a policy, | 
					
						
							|  |  |  |     # then to set that policy to the backend | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     lb.create_lb_policy(policy_name, 'ProxyProtocolPolicyType', { | 
					
						
							|  |  |  |                         'ProxyProtocol': True}) | 
					
						
							| 
									
										
										
										
											2015-07-14 23:54:58 +00:00
										 |  |  |     lb.set_policies_of_backend_server(instance_port, [policy_name]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = conn.get_all_load_balancers()[0] | 
					
						
							|  |  |  |     backend = lb.backends[0] | 
					
						
							|  |  |  |     backend.instance_port.should.equal(instance_port) | 
					
						
							|  |  |  |     # by contrast to a listener, a backend stores OtherPolicy objects | 
					
						
							|  |  |  |     backend.policies[0].policy_name.should.equal(policy_name) | 
					
						
							| 
									
										
										
										
											2015-03-22 15:35:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_ec2_deprecated | 
					
						
							|  |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  | def test_describe_instance_health(): | 
					
						
							|  |  |  |     ec2_conn = boto.connect_ec2() | 
					
						
							|  |  |  |     reservation = ec2_conn.run_instances('ami-1234abcd', 2) | 
					
						
							|  |  |  |     instance_id1 = reservation.instances[0].id | 
					
						
							|  |  |  |     instance_id2 = reservation.instances[1].id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     zones = ['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     lb = conn.create_load_balancer('my-lb', zones, ports) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     instances_health = conn.describe_instance_health('my-lb') | 
					
						
							|  |  |  |     instances_health.should.be.empty | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb.register_instances([instance_id1, instance_id2]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     instances_health = conn.describe_instance_health('my-lb') | 
					
						
							|  |  |  |     instances_health.should.have.length_of(2) | 
					
						
							|  |  |  |     for instance_health in instances_health: | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         instance_health.instance_id.should.be.within( | 
					
						
							|  |  |  |             [instance_id1, instance_id2]) | 
					
						
							| 
									
										
										
										
											2015-03-22 16:00:16 -04:00
										 |  |  |         instance_health.state.should.equal('InService') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     instances_health = conn.describe_instance_health('my-lb', [instance_id1]) | 
					
						
							|  |  |  |     instances_health.should.have.length_of(1) | 
					
						
							|  |  |  |     instances_health[0].instance_id.should.equal(instance_id1) | 
					
						
							|  |  |  |     instances_health[0].state.should.equal('InService') | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_elb | 
					
						
							|  |  |  | def test_add_remove_tags(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags.when.called_with(LoadBalancerNames=['my-lb'], | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                                      Tags=[{ | 
					
						
							|  |  |  |                                          'Key': 'a', | 
					
						
							|  |  |  |                                          'Value': 'b' | 
					
						
							|  |  |  |                                      }]).should.throw(botocore.exceptions.ClientError) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     list(client.describe_load_balancers()[ | 
					
						
							|  |  |  |          'LoadBalancerDescriptions']).should.have.length_of(1) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags(LoadBalancerNames=['my-lb'], | 
					
						
							|  |  |  |                     Tags=[{ | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'a', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     tags = dict([(d['Key'], d['Value']) for d in client.describe_tags( | 
					
						
							|  |  |  |         LoadBalancerNames=['my-lb'])['TagDescriptions'][0]['Tags']]) | 
					
						
							| 
									
										
										
										
											2016-04-14 15:51:32 +02:00
										 |  |  |     tags.should.have.key('a').which.should.equal('b') | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags(LoadBalancerNames=['my-lb'], | 
					
						
							|  |  |  |                     Tags=[{ | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'a', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'b', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'c', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'd', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'e', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'f', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'g', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'h', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'i', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }, { | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'j', | 
					
						
							|  |  |  |                         'Value': 'b' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags.when.called_with(LoadBalancerNames=['my-lb'], | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                                      Tags=[{ | 
					
						
							|  |  |  |                                          'Key': 'k', | 
					
						
							|  |  |  |                                          'Value': 'b' | 
					
						
							|  |  |  |                                      }]).should.throw(botocore.exceptions.ClientError) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags(LoadBalancerNames=['my-lb'], | 
					
						
							|  |  |  |                     Tags=[{ | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'j', | 
					
						
							|  |  |  |                         'Value': 'c' | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  |                     }]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     tags = dict([(d['Key'], d['Value']) for d in client.describe_tags( | 
					
						
							|  |  |  |         LoadBalancerNames=['my-lb'])['TagDescriptions'][0]['Tags']]) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     tags.should.have.key('a').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('b').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('c').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('d').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('e').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('f').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('g').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('h').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('i').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('j').which.should.equal('c') | 
					
						
							|  |  |  |     tags.shouldnt.have.key('k') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.remove_tags(LoadBalancerNames=['my-lb'], | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                        Tags=[{ | 
					
						
							|  |  |  |                            'Key': 'a' | 
					
						
							|  |  |  |                        }]) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     tags = dict([(d['Key'], d['Value']) for d in client.describe_tags( | 
					
						
							|  |  |  |         LoadBalancerNames=['my-lb'])['TagDescriptions'][0]['Tags']]) | 
					
						
							| 
									
										
										
										
											2015-12-09 21:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     tags.shouldnt.have.key('a') | 
					
						
							|  |  |  |     tags.should.have.key('b').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('c').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('d').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('e').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('f').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('g').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('h').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('i').which.should.equal('b') | 
					
						
							|  |  |  |     tags.should.have.key('j').which.should.equal('c') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-14 12:38:10 +01:00
										 |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='other-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 433, 'InstancePort': 8433}], | 
					
						
							| 
									
										
										
										
											2015-12-14 12:38:10 +01:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.add_tags(LoadBalancerNames=['other-lb'], | 
					
						
							|  |  |  |                     Tags=[{ | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |                         'Key': 'other', | 
					
						
							|  |  |  |                         'Value': 'something' | 
					
						
							| 
									
										
										
										
											2015-12-14 12:38:10 +01:00
										 |  |  |                     }]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-14 12:55:34 +01:00
										 |  |  |     lb_tags = dict([(l['LoadBalancerName'], dict([(d['Key'], d['Value']) for d in l['Tags']])) | 
					
						
							|  |  |  |                     for l in client.describe_tags(LoadBalancerNames=['my-lb', 'other-lb'])['TagDescriptions']]) | 
					
						
							| 
									
										
										
										
											2015-12-14 12:38:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lb_tags.should.have.key('my-lb') | 
					
						
							|  |  |  |     lb_tags.should.have.key('other-lb') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb_tags['my-lb'].shouldnt.have.key('other') | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     lb_tags[ | 
					
						
							|  |  |  |         'other-lb'].should.have.key('other').which.should.equal('something') | 
					
						
							| 
									
										
										
										
											2016-04-14 14:43:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-14 15:50:51 +02:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_create_with_tags(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2016-04-14 15:50:51 +02:00
										 |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'], | 
					
						
							|  |  |  |         Tags=[{ | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |             'Key': 'k', | 
					
						
							|  |  |  |             'Value': 'v' | 
					
						
							| 
									
										
										
										
											2016-04-14 15:50:51 +02:00
										 |  |  |         }] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     tags = dict((d['Key'], d['Value']) for d in client.describe_tags( | 
					
						
							|  |  |  |         LoadBalancerNames=['my-lb'])['TagDescriptions'][0]['Tags']) | 
					
						
							| 
									
										
										
										
											2016-04-14 15:50:51 +02:00
										 |  |  |     tags.should.have.key('k').which.should.equal('v') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 15:53:31 -07:00
										 |  |  | @mock_elb | 
					
						
							|  |  |  | def test_modify_attributes(): | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         Listeners=[{'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							|  |  |  |         AvailabilityZones=['us-east-1a', 'us-east-1b'] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Default ConnectionDraining timeout of 300 seconds | 
					
						
							|  |  |  |     client.modify_load_balancer_attributes( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         LoadBalancerAttributes={ | 
					
						
							|  |  |  |             'ConnectionDraining': {'Enabled': True}, | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     lb_attrs = client.describe_load_balancer_attributes(LoadBalancerName='my-lb') | 
					
						
							|  |  |  |     lb_attrs['LoadBalancerAttributes']['ConnectionDraining']['Enabled'].should.equal(True) | 
					
						
							|  |  |  |     lb_attrs['LoadBalancerAttributes']['ConnectionDraining']['Timeout'].should.equal(300) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # specify a custom ConnectionDraining timeout | 
					
						
							|  |  |  |     client.modify_load_balancer_attributes( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							|  |  |  |         LoadBalancerAttributes={ | 
					
						
							|  |  |  |             'ConnectionDraining': { | 
					
						
							|  |  |  |                 'Enabled': True, | 
					
						
							|  |  |  |                 'Timeout': 45, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     lb_attrs = client.describe_load_balancer_attributes(LoadBalancerName='my-lb') | 
					
						
							|  |  |  |     lb_attrs['LoadBalancerAttributes']['ConnectionDraining']['Enabled'].should.equal(True) | 
					
						
							|  |  |  |     lb_attrs['LoadBalancerAttributes']['ConnectionDraining']['Timeout'].should.equal(45) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-14 14:43:03 +02:00
										 |  |  | @mock_ec2 | 
					
						
							|  |  |  | @mock_elb | 
					
						
							|  |  |  | def test_subnets(): | 
					
						
							|  |  |  |     ec2 = boto3.resource('ec2', region_name='us-east-1') | 
					
						
							|  |  |  |     vpc = ec2.create_vpc( | 
					
						
							|  |  |  |         CidrBlock='172.28.7.0/24', | 
					
						
							|  |  |  |         InstanceTenancy='default' | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     subnet = ec2.create_subnet( | 
					
						
							|  |  |  |         VpcId=vpc.id, | 
					
						
							|  |  |  |         CidrBlock='172.28.7.192/26' | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     client = boto3.client('elb', region_name='us-east-1') | 
					
						
							|  |  |  |     client.create_load_balancer( | 
					
						
							|  |  |  |         LoadBalancerName='my-lb', | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |         Listeners=[ | 
					
						
							|  |  |  |             {'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstancePort': 8080}], | 
					
						
							| 
									
										
										
										
											2016-04-14 14:43:03 +02:00
										 |  |  |         Subnets=[subnet.id] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     lb = client.describe_load_balancers()['LoadBalancerDescriptions'][0] | 
					
						
							|  |  |  |     lb.should.have.key('Subnets').which.should.have.length_of(1) | 
					
						
							| 
									
										
										
										
											2016-04-14 14:48:57 +02:00
										 |  |  |     lb['Subnets'][0].should.equal(subnet.id) | 
					
						
							| 
									
										
										
										
											2016-04-14 14:43:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lb.should.have.key('VPCId').which.should.equal(vpc.id) | 
					
						
							| 
									
										
										
										
											2016-05-15 20:04:00 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 22:35:45 -05:00
										 |  |  | @mock_elb_deprecated | 
					
						
							| 
									
										
										
										
											2016-05-15 20:04:00 +02:00
										 |  |  | def test_create_load_balancer_duplicate(): | 
					
						
							|  |  |  |     conn = boto.connect_elb() | 
					
						
							|  |  |  |     ports = [(80, 8080, 'http'), (443, 8443, 'tcp')] | 
					
						
							|  |  |  |     conn.create_load_balancer('my-lb', [], ports) | 
					
						
							| 
									
										
										
										
											2017-02-23 21:37:43 -05:00
										 |  |  |     conn.create_load_balancer.when.called_with( | 
					
						
							|  |  |  |         'my-lb', [], ports).should.throw(BotoServerError) |