def test_create_subnet(self): vpc_ctx = { 'name': 'vpc01', 'cidr_block': '10.0.10.0/24' } subnet_ctx = { 'name': 'subnet01a', 'cidr_block': '10.0.10.0/25', 'zone': 'us-west-2a', 'vpc': 'vpc01', 'tags': { 'description': 'Test subnet (zone a) for VPC vpc01' } } tags = [ { 'Key': 'Name', 'Value': 'subnet01a' }, { 'Key': 'Description', 'Value': 'Test subnet (zone a) for VPC vpc01' } ] vpc_filters = [{'Name': 'tag:Name', 'Values': ['vpc01']}] subnet_filters = [{'Name': 'tag:Name', 'Values': ['subnet01a']}] def _add_wrapper(base_classes, **kwargs): base_classes.insert(0, ec2_subnet.SubnetWrapper) with mock_ec2(): event = 'creating-resource-class.ec2.Subnet' session = Session(**self.credentials) session.events.register(event, _add_wrapper) ec2 = session.resource('ec2') # Create the VPC h = ec2_vpc.create_handler(vpc_ctx, self.credentials) h.create_resource() vpcs = list(ec2.vpcs.filter(Filters=vpc_filters)) vpc = vpcs[0] # Create the subnet h = ec2_subnet.create_handler(subnet_ctx, self.credentials) h.create_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] self.assertEqual(len(subnets), 1) self.assertEqual(subnet.name, 'subnet01a') self.assertEqual(subnet.cidr_block, '10.0.10.0/25') self.assertEqual(subnet.availability_zone, 'us-west-2a') self.assertEqual(subnet.vpc_id, vpc.id) self.assertEqual(subnet.map_public_ip_on_launch, False) self.assertCountEqual(subnet.tags, tags)
def test_delete_route_table_with_association(self): vpc_ctx = { 'name': 'vpc01', 'cidr_block': '10.0.10.0/24' } subnet_ctx = { 'name': 'subnet01a', 'cidr_block': '10.0.10.0/25', 'zone': 'us-west-2a', 'vpc': 'vpc01' } rt_ctx = { 'name': 'rt01', 'vpc': 'vpc01', 'subnets': [ 'subnet01a' ] } filters = [{'Name': 'tag:Name', 'Values': ['rt01']}] def _add_wrapper(base_classes, **kwargs): base_classes.insert(0, ec2_rt.RouteTableWrapper) with mock_ec2(): event = 'creating-resource-class.ec2.RouteTable' session = Session(**self.credentials) session.events.register(event, _add_wrapper) ec2 = session.resource('ec2') # Create the VPC h = ec2_vpc.create_handler(vpc_ctx, self.credentials) h.create_resource() # Create the subnet h = ec2_subnet.create_handler(subnet_ctx, self.credentials) h.create_resource() # Create the route table h = ec2_rt.create_handler(rt_ctx, self.credentials) h.create_resource() route_tables = list(ec2.route_tables.filter(Filters=filters)) self.assertEqual(len(route_tables), 1) # We clear the resource cache to simulate a new # program execution with the 'delete' option base.BaseHandler._cache.clear() # Delete the route table h.delete_resource() route_tables = list(ec2.route_tables.filter(Filters=filters)) self.assertEqual(len(route_tables), 0)
def test_update_subnet(self): vpc_ctx = { 'name': 'vpc01', 'cidr_block': '10.0.10.0/24' } subnet_ctx1 = { 'name': 'subnet01b', 'cidr_block': '10.0.10.128/25', 'zone': 'us-west-2b', 'vpc': 'vpc01', 'tags': { 'description': 'Test subnet (zone b) for VPC vpc01', 'stack': 'Test', 'owner': 'Team A' } } subnet_ctx2 = { 'name': 'subnet01b', 'cidr_block': '10.0.10.128/25', 'zone': 'us-west-2b', 'vpc': 'vpc01', 'tags': { 'description': 'Test subnet (zone b) for VPC vpc01', 'stack': 'Production' } } tags1 = [ { 'Key': 'Name', 'Value': 'subnet01b' }, { 'Key': 'Description', 'Value': 'Test subnet (zone b) for VPC vpc01' }, { 'Key': 'Stack', 'Value': 'Test' }, { 'Key': 'Owner', 'Value': 'Team A' } ] tags2 = [ { 'Key': 'Name', 'Value': 'subnet01b' }, { 'Key': 'Description', 'Value': 'Test subnet (zone b) for VPC vpc01' }, { 'Key': 'Stack', 'Value': 'Production' } ] subnet_filters = [{'Name': 'tag:Name', 'Values': ['subnet01b']}] def _add_wrapper(base_classes, **kwargs): base_classes.insert(0, ec2_subnet.SubnetWrapper) with mock_ec2(): event = 'creating-resource-class.ec2.Subnet' session = Session(**self.credentials) session.events.register(event, _add_wrapper) ec2 = session.resource('ec2') # Create the VPC h = ec2_vpc.create_handler(vpc_ctx, self.credentials) h.create_resource() # Create the subnet h = ec2_subnet.create_handler(subnet_ctx1, self.credentials) h.create_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] subnet_id = subnet.id self.assertEqual(len(subnets), 1) self.assertCountEqual(subnet.tags, tags1) # We clear the resource cache to simulate a new # program execution with the 'update' option base.BaseHandler._cache.clear() # Update the subnet h = ec2_subnet.create_handler(subnet_ctx2, self.credentials) h.update_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] self.assertEqual(len(subnets), 1) self.assertEqual(subnet.id, subnet_id) self.assertCountEqual(subnet.tags, tags2)
def test_update_map_public_ip_on_launch(self): vpc_ctx = { 'name': 'vpc01', 'cidr_block': '10.0.10.0/24' } subnet_ctx1 = { 'name': 'subnet01b', 'cidr_block': '10.0.10.128/25', 'zone': 'us-west-2b', 'vpc': 'vpc01' } subnet_ctx2 = { 'name': 'subnet01b', 'cidr_block': '10.0.10.128/25', 'zone': 'us-west-2b', 'vpc': 'vpc01', 'map_public_ip_on_launch': True } subnet_filters = [{'Name': 'tag:Name', 'Values': ['subnet01b']}] def _add_wrapper(base_classes, **kwargs): base_classes.insert(0, ec2_subnet.SubnetWrapper) with mock_ec2(): event = 'creating-resource-class.ec2.Subnet' session = Session(**self.credentials) session.events.register(event, _add_wrapper) ec2 = session.resource('ec2') # Create the VPC h = ec2_vpc.create_handler(vpc_ctx, self.credentials) h.create_resource() # Create the subnet h = ec2_subnet.create_handler(subnet_ctx1, self.credentials) h.create_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] subnet_id = subnet.id self.assertEqual(len(subnets), 1) self.assertEqual(subnet.name, 'subnet01b') self.assertEqual(subnet.cidr_block, '10.0.10.128/25') self.assertEqual(subnet.availability_zone, 'us-west-2b') self.assertEqual(subnet.map_public_ip_on_launch, False) # We clear the resource cache to simulate a new # program execution with the 'update' option base.BaseHandler._cache.clear() # Update the subnet h = ec2_subnet.create_handler(subnet_ctx2, self.credentials) h.update_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] self.assertEqual(len(subnets), 1) self.assertEqual(subnet.id, subnet_id) self.assertEqual(subnet.map_public_ip_on_launch, True)
def test_change_subnet_association(self): vpc_ctx = { 'name': 'vpc01', 'cidr_block': '10.0.10.0/24' } subnet_ctx = { 'name': 'subnet01a', 'cidr_block': '10.0.10.0/25', 'zone': 'us-west-2a', 'vpc': 'vpc01' } rt_ctx1 = { 'name': 'rt01', 'vpc': 'vpc01', 'subnets': [ 'subnet01a' ] } rt_ctx2 = { 'name': 'rt02', 'vpc': 'vpc01', 'subnets': [ 'subnet01a' ] } subnet_filters = [{'Name': 'tag:Name', 'Values': ['subnet01a']}] rt01_filters = [{'Name': 'tag:Name', 'Values': ['rt01']}] rt02_filters = [{'Name': 'tag:Name', 'Values': ['rt02']}] def _add_wrapper(base_classes, **kwargs): base_classes.insert(0, ec2_rt.RouteTableWrapper) with mock_ec2(): event = 'creating-resource-class.ec2.RouteTable' session = Session(**self.credentials) session.events.register(event, _add_wrapper) ec2 = session.resource('ec2') # Create the VPC h = ec2_vpc.create_handler(vpc_ctx, self.credentials) h.create_resource() # Create the subnet h = ec2_subnet.create_handler(subnet_ctx, self.credentials) h.create_resource() subnets = list(ec2.subnets.filter(Filters=subnet_filters)) subnet = subnets[0] # Create route table rt01 h = ec2_rt.create_handler(rt_ctx1, self.credentials) h.create_resource() route_tables = list(ec2.route_tables.filter(Filters=rt01_filters)) rt01 = route_tables[0] filters = [ { 'Name': 'association.subnet-id', 'Values': [subnet.id] }, { 'Name': 'association.route-table-id', 'Values': [rt01.id] } ] associations = list(rt01.associations.filter(Filters=filters)) self.assertEqual(len(associations), 1) # Create route table rt02 h = ec2_rt.create_handler(rt_ctx2, self.credentials) h.create_resource() route_tables = list(ec2.route_tables.filter(Filters=rt02_filters)) rt02 = route_tables[0] filters = [ { 'Name': 'association.subnet-id', 'Values': [subnet.id] }, { 'Name': 'association.route-table-id', 'Values': [rt02.id] } ] associations = list(rt02.associations.filter(Filters=filters)) self.assertEqual(len(associations), 1)