Exemple #1
0
    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)
Exemple #3
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)
Exemple #4
0
    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)