Exemplo n.º 1
0
 def __init__(self, name, vpc_id):
     self.name = name
     self.vpc = vpc.VPC(id=vpc_id)
     self.ec2_conn = connection.Connection()
     _role = constants.ROLES.get(self.__class__.__name__.upper(), 'DEFAULT')
     self.role = _role
     self.subnet = None
Exemplo n.º 2
0
    def delete_vpc(ctx, vpc_id):
        """Delete VPC"""

        domain = ctx.obj['DOMAIN']
        connection.Connection.context.domain = domain

        vpc.VPC(id=vpc_id).delete()
Exemplo n.º 3
0
    def test_create_hosted_zone_reverse(self, connectionMock):
        _connectionMock = connectionMock('route53')
        connectionMock.context.region_name = 'us-east-1'
        expected_hosted_zone = {
            'HostedZone': {
                'Id': 'Some-Zone-Id'
            },
            'VPC': {
                'Id': self.vpc_id_mock
            }
        }
        _connectionMock.create_hosted_zone = mock.Mock(
            return_value=expected_hosted_zone)

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.cidr_block = '172.10.0.0/16'
        _vpc.create_hosted_zone(reverse=True)

        self.assertEquals(_vpc.reverse_hosted_zone_id,
                          expected_hosted_zone['HostedZone']['Id'])
        _connectionMock.create_hosted_zone.assert_called_once_with(
            Name='10.172.in-addr.arpa',
            VPC={
                'VPCRegion': 'us-east-1',
                'VPCId': self.vpc_id_mock,
            },
            HostedZoneConfig={'PrivateZone': True},
            CallerReference='786')
Exemplo n.º 4
0
    def test_create(self, connectionMock):
        _connectionMock = connectionMock()
        vpc_response_mock = {
            'Vpc': {
                'VpcId': self.vpc_id_mock,
                'CidrBlock': '172.16.0.0/16'
            }
        }
        _connectionMock.create_vpc = mock.Mock(return_value=vpc_response_mock)
        _connectionMock.create_tags = mock.Mock()

        _vpc = vpc.VPC()
        _vpc.create(cidr_block='172.16.0.0/16')

        self.assertEquals(_vpc.id, self.vpc_id_mock)
        self.assertEquals(_vpc.metadata, vpc_response_mock)
        self.assertEquals(_vpc.cidr_block, '172.16.0.0/16')
        _connectionMock.create_vpc.assert_called_once_with(
            CidrBlock='172.16.0.0/16')
        _connectionMock.create_tags.assert_called_once_with(
            Resources=[self.vpc_id_mock],
            Tags=[{
                'Key': 'Name',
                'Value': 'Treadmill-vpc'
            }])
        _connectionMock.modify_vpc_attribute.assert_called_once_with(
            VpcId=self.vpc_id_mock, EnableDnsHostnames={'Value': True})
Exemplo n.º 5
0
    def test_setup(self, connectionMock, create_internet_gateway_mock,
                   create_security_group_mock, associate_dhcp_options_mock):
        create_security_group_mock.return_value = 'sg-group'
        _connectionMock = connectionMock()
        _vpc_mock = vpc.VPC()
        vpc.VPC.create = mock.Mock(return_value=_vpc_mock)
        vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connectionMock

        vpc.VPC.setup(
            name='VpcTest',
            cidr_block='172.23.0.0/24',
        )

        vpc.VPC.create.assert_called_once_with(name='VpcTest',
                                               cidr_block='172.23.0.0/24')
        create_internet_gateway_mock.assert_called_once()
        create_security_group_mock.assert_called_once_with(
            'sg_common', 'Treadmill Security Group')
        _connectionMock.authorize_security_group_ingress.assert_called_once_with(  # noqa
            GroupId='sg-group',
            IpPermissions=[{
                'IpProtocol': '-1',
                'UserIdGroupPairs': [{
                    'GroupId': 'sg-group'
                }]
            }])
Exemplo n.º 6
0
    def test_create_hosted_zone(self, connectionMock):
        connectionMock.context.domain = 'foo.bar'
        _connectionMock = connectionMock('route53')
        connectionMock.context.region_name = 'us-east-1'
        expected_hosted_zone = {
            'HostedZone': {
                'Id': 'Some-Zone-Id'
            },
            'VPC': {
                'Id': self.vpc_id_mock
            }
        }
        _connectionMock.create_hosted_zone = mock.Mock(
            return_value=expected_hosted_zone)

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.create_hosted_zone()

        self.assertEquals(_vpc.hosted_zone_id,
                          expected_hosted_zone['HostedZone']['Id'])
        _connectionMock.create_hosted_zone.assert_called_once_with(
            Name='foo.bar',
            VPC={
                'VPCRegion': 'us-east-1',
                'VPCId': self.vpc_id_mock,
            },
            HostedZoneConfig={'PrivateZone': True},
            CallerReference='786')
Exemplo n.º 7
0
 def delete_cell(vpc_id, domain, subnet_id):
     """Delete Cell (Subnet)"""
     connection.Connection.context.domain = domain
     _vpc = vpc.VPC(id=vpc_id)
     _vpc.load_hosted_zone_ids()
     subnet.Subnet(id=subnet_id).destroy(
         hosted_zone_id=_vpc.hosted_zone_id,
         reverse_hosted_zone_id=_vpc.reverse_hosted_zone_id)
Exemplo n.º 8
0
    def test_load_hosted_zone_ids(self, connectionMock):
        _connectionMock = connectionMock('route53')
        _connectionMock.list_hosted_zones = mock.Mock(
            return_value={
                'HostedZones': [{
                    'Id': 'zone-id',
                    'Name': 'zone-name',
                }, {
                    'Id': 'zone-id-reverse',
                    'Name': 'zone-name.in-addr-arpa',
                }, {
                    'Id': 'zone-id-1',
                    'Name': 'zone-name-foo',
                }]
            })
        _connectionMock.get_hosted_zone = mock.Mock()
        _connectionMock.get_hosted_zone.side_effect = [{
            'HostedZone': {
                'Id': 'zone-id',
                'Name': 'zone-name',
            },
            'VPCs': [{
                'VPCRegion': 'region',
                'VPCId': self.vpc_id_mock
            }]
        }, {
            'HostedZone': {
                'Id': 'zone-id-reverse',
                'Name': 'zone-name.in-addr.arpa',
            },
            'VPCs': [{
                'VPCRegion': 'region',
                'VPCId': self.vpc_id_mock
            }]
        }, {
            'HostedZone': {
                'Id': 'zone-id-1',
                'Name': 'zone-name-foo',
            },
            'VPCs': [{
                'VPCRegion': 'region',
                'VPCId': 'foobar'
            }]
        }]

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.load_hosted_zone_ids()

        self.assertCountEqual(_vpc.hosted_zone_ids,
                              ['zone-id', 'zone-id-reverse'])
        self.assertEqual(_vpc.hosted_zone_id, 'zone-id')
        self.assertEqual(_vpc.reverse_hosted_zone_id, 'zone-id-reverse')
        _connectionMock.list_hosted_zones.assert_called_once()
        self.assertCountEqual(_connectionMock.get_hosted_zone.mock_calls, [
            mock.mock.call(Id='zone-id'),
            mock.mock.call(Id='zone-id-reverse'),
            mock.mock.call(Id='zone-id-1')
        ])
Exemplo n.º 9
0
    def test_delete_hosted_zones(self, connectionMock):
        _connectionMock = connectionMock('route53')
        _connectionMock.delete_hosted_zone = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.hosted_zone_ids = [1]

        _vpc.delete_hosted_zones()

        _connectionMock.delete_hosted_zone.assert_called_once_with(Id=1)
Exemplo n.º 10
0
    def test_delete_dhcp_options(self, connectionMock):
        _connectionMock = connectionMock()

        vpc.VPC.ec2_conn = _connectionMock
        _vpc = vpc.VPC(metadata={'DhcpOptionsId': '1'})

        _vpc.delete_dhcp_options()

        _connectionMock.delete_dhcp_options.assert_called_once_with(
            DhcpOptionsId='1')
Exemplo n.º 11
0
    def test_delete_internet_gateway(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.delete_internet_gateway = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.gateway_ids = [self.internet_gateway_id_mock]
        _vpc.delete_internet_gateway()

        _connectionMock.delete_internet_gateway.assert_called_once_with(
            InternetGatewayId=self.internet_gateway_id_mock)
Exemplo n.º 12
0
    def test_create_subnet(self, ConnectionMock, SubnetMock):
        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.create_subnet(name='subnet-name',
                           cidr_block='172.23.0.0/24',
                           gateway_id='gateway-id')

        SubnetMock.create.assert_called_once_with(name='subnet-name',
                                                  vpc_id=self.vpc_id_mock,
                                                  cidr_block='172.23.0.0/24',
                                                  gateway_id='gateway-id')
Exemplo n.º 13
0
 def vpc_resources(ctx, vpc_id):
     """Show VPC(s)"""
     domain = ctx.obj['DOMAIN']
     connection.Connection.context.domain = domain
     if vpc_id:
         result = pprint(vpc.VPC(id=vpc_id).show())
         click.echo(result)
     else:
         _vpcs = vpc.VPC.all()
         result = list(map(lambda v: {'id': v.id, 'name': v.name}, _vpcs))
         click.echo({'Vpcs': result})
Exemplo n.º 14
0
    def test_delete_security_groups(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.delete_security_group = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.secgroup_ids = ['secgroup-id-0', 'secgroup-id-1']
        _vpc.delete_security_groups()

        self.assertCountEqual(_connectionMock.delete_security_group.mock_calls,
                              [
                                  mock.mock.call(GroupId='secgroup-id-0'),
                                  mock.mock.call(GroupId='secgroup-id-1')
                              ])
Exemplo n.º 15
0
 def __init__(
         self,
         name,
         vpc_id
 ):
     self.name = name
     self.vpc = vpc.VPC(id=vpc_id)
     self.route_53_conn = connection.Connection(constants.ROUTE_53)
     self.instances = None
     _role = constants.ROLES.get(
         self.__class__.__name__.upper(),
         'DEFAULT'
     )
     self.role = _role
Exemplo n.º 16
0
    def test_load_route_related_ids(self, connectionMock):
        route_table_response_mock = {
            'RouteTables': [{
                'RouteTableId':
                'route_table_id_0',
                'VpcId':
                self.vpc_id_mock,
                'Routes': [{
                    'GatewayId': 'gateway_id_0',
                    'InstanceId': 'route_instance_id_0',
                }],
                'Associations': [{
                    'RouteTableAssociationId': 'ass_id_0',
                    'RouteTableId': 'route_table_id_0',
                    'SubnetId': 'subnet_id_0',
                }]
            }, {
                'RouteTableId':
                'route_table_id_1',
                'VpcId':
                self.vpc_id_mock,
                'Routes': [{
                    'GatewayId': 'gateway_id_1',
                    'InstanceId': 'route_instance_id_1',
                }],
                'Associations': [{
                    'RouteTableAssociationId': 'ass_id_1',
                    'RouteTableId': 'route_table_id_1',
                    'SubnetId': 'subnet_id_1',
                }]
            }]
        }

        _connectionMock = connectionMock()
        _connectionMock.describe_route_tables = mock.Mock(
            return_value=route_table_response_mock)
        vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connectionMock
        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.load_route_related_ids()
        self.assertEquals(_vpc.association_ids, ['ass_id_0', 'ass_id_1'])
        self.assertEquals(_vpc.route_table_ids,
                          ['route_table_id_0', 'route_table_id_1'])
        self.assertEquals(_vpc.subnet_ids, ['subnet_id_0', 'subnet_id_1'])

        _connectionMock.describe_route_tables.assert_called_once_with(
            Filters=[{
                'Name': 'vpc-id',
                'Values': [self.vpc_id_mock]
            }])
Exemplo n.º 17
0
    def test_create_security_group(self, connectionMock):
        _connMock = connectionMock()
        _connMock.create_security_group = mock.Mock(
            return_value={'GroupId': self.security_group_id_mock})

        vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connMock
        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.create_security_group(group_name='foobar',
                                   description='foobar description')

        self.assertEquals(_vpc.secgroup_ids, [self.security_group_id_mock])
        _connMock.create_security_group.assert_called_once_with(
            GroupName='foobar',
            Description='foobar description',
            VpcId=self.vpc_id_mock)
Exemplo n.º 18
0
    def test_create_internet_gateway(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.create_internet_gateway = mock.Mock(return_value={
            'InternetGateway': {
                'InternetGatewayId': self.gateway_id_mock
            }
        })
        _connectionMock.attach_internet_gatway = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.create_internet_gateway()

        self.assertEquals(_vpc.gateway_ids, [self.gateway_id_mock])
        _connectionMock.create_internet_gateway.assert_called_once()
        _connectionMock.attach_internet_gateway.assert_called_once_with(
            InternetGatewayId=self.gateway_id_mock, VpcId=self.vpc_id_mock)
Exemplo n.º 19
0
    def test_delete(self, connectionMock, terminate_instances_mock,
                    delete_internet_gateway_mock, delete_security_groups_mock,
                    delete_route_tables_mock, delete_hosted_zones_mock):
        _connectionMock = connectionMock()
        _connectionMock.delete_vpc = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.delete()

        terminate_instances_mock.assert_called_once()
        delete_internet_gateway_mock.assert_called_once()
        delete_security_groups_mock.assert_called_once()
        delete_route_tables_mock.assert_called_once()
        delete_hosted_zones_mock.assert_called_once()
        _connectionMock.delete_vpc.assert_called_once_with(
            VpcId=self.vpc_id_mock)
Exemplo n.º 20
0
    def test_terminate_instances(self, connectionMock, instances_mock,
                                 vpc_instances_mock):
        _connectionMock = connectionMock()
        instances_obj_mock = mock.Mock()
        connectionMock.describe_vpcs = mock.Mock(
            return_value={'Vpcs': [{
                'VpcId': self.vpc_id_mock,
                'foo': 'bar'
            }]})

        vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connectionMock
        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.instances = instances_obj_mock

        _vpc.terminate_instances()

        instances_obj_mock.terminate.assert_called_once_with()
Exemplo n.º 21
0
    def test_list_cells(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.describe_subnets = mock.Mock(
            return_value={'Subnets': [{
                'SubnetId': '1'
            }, {
                'SubnetId': '2'
            }]})

        vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connectionMock
        subnets = vpc.VPC(id='vpc-123').list_cells()

        _connectionMock.describe_subnets.assert_called_once_with(
            Filters=[{
                'Name': 'vpc-id',
                'Values': ['vpc-123']
            }])
        self.assertEquals(subnets, ['1', '2'])
Exemplo n.º 22
0
 def test_refresh(self, connectionMock, security_group_ids_mock,
                  instances_mock):
     _connectionMock = connectionMock()
     _vpc_metadata_mock = {
         'VpcId': self.vpc_id_mock,
         'CidrBlock': '172.0.0.1'
     }
     _connectionMock.describe_vpcs = mock.Mock(
         return_value={'Vpcs': [_vpc_metadata_mock]})
     vpc.VPC.ec2_conn = vpc.VPC.route53_conn = _connectionMock
     _vpc = vpc.VPC(id=self.vpc_id_mock)
     _vpc.refresh()
     self.assertIsInstance(_vpc, vpc.VPC)
     self.assertEqual(_vpc.id, self.vpc_id_mock)
     self.assertEqual(_vpc.metadata, _vpc_metadata_mock)
     self.assertEqual(_vpc.cidr_block, '172.0.0.1')
     _connectionMock.describe_vpcs.assert_called_once_with(
         VpcIds=[self.vpc_id_mock])
     instances_mock.assert_called_once()
     security_group_ids_mock.assert_called_once()
Exemplo n.º 23
0
    def test_get_internet_gateway_id(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.describe_internet_gateways = mock.Mock(
            return_value={
                'InternetGateways': [{
                    'InternetGatewayId':
                    self.internet_gateway_id_mock
                }]
            })

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.load_internet_gateway_ids()

        self.assertEquals(_vpc.gateway_ids, [self.internet_gateway_id_mock])

        _connectionMock.describe_internet_gateways.assert_called_once_with(
            Filters=[{
                'Name': 'attachment.vpc-id',
                'Values': [self.vpc_id_mock]
            }])
Exemplo n.º 24
0
    def test_get_instances(self, connectionMock, instances_mock,
                           vpc_instances_mock):
        instances_mock.get = vpc_instances_mock.get = mock.Mock(
            return_value='foo')
        connectionMock.describe_vpcs = mock.Mock(
            return_value={'Vpcs': [{
                'VpcId': self.vpc_id_mock,
                'foo': 'bar'
            }]})

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.get_instances(refresh=True)

        self.assertEquals(_vpc.instances, 'foo')

        instances_mock.get.assert_called_once_with(
            filters=[{
                'Name': 'vpc-id',
                'Values': [self.vpc_id_mock],
            }])
Exemplo n.º 25
0
 def test_refresh(self, connectionMock, security_group_ids_mock,
                  hosted_zone_ids_mock, instances_mock):
     _connectionMock = connectionMock()
     _connectionMock.describe_vpcs = mock.Mock(
         return_value={'Vpcs': [{
             'VpcId': self.vpc_id_mock,
             'foo': 'bar'
         }]})
     _vpc = vpc.VPC(id=self.vpc_id_mock)
     _vpc.refresh()
     self.assertIsInstance(_vpc, vpc.VPC)
     self.assertEqual(_vpc.id, self.vpc_id_mock)
     self.assertEqual(_vpc.metadata, {
         'VpcId': self.vpc_id_mock,
         'foo': 'bar'
     })
     _connectionMock.describe_vpcs.assert_called_once_with(
         VpcIds=[self.vpc_id_mock])
     instances_mock.assert_called_once()
     hosted_zone_ids_mock.assert_called_once()
     security_group_ids_mock.assert_called_once()
Exemplo n.º 26
0
    def test_delete_route_tables(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.disassociate_route_table = mock.Mock()
        _connectionMock.delete_route_table = mock.Mock()
        _connectionMock.delete_subnet = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.route_related_ids = 'foo'
        _vpc.association_ids = ['ass-id']
        _vpc.route_table_ids = ['route-table-id']
        _vpc.subnet_ids = ['subnet-id']
        _vpc.delete_route_tables()

        _connectionMock.disassociate_route_table.assert_called_once_with(
            AssociationId='ass-id')

        _connectionMock.delete_route_table.assert_called_once_with(
            RouteTableId='route-table-id')

        _connectionMock.delete_subnet.assert_called_once_with(
            SubnetId='subnet-id')
Exemplo n.º 27
0
    def test_terminate_instances(self, connectionMock, instances_mock,
                                 vpc_instances_mock):
        instances_obj_mock = mock.Mock()
        connectionMock.describe_vpcs = mock.Mock(
            return_value={'Vpcs': [{
                'VpcId': self.vpc_id_mock,
                'foo': 'bar'
            }]})

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.instances = instances_obj_mock
        _vpc.hosted_zone_ids = [1, 2]
        _vpc.hosted_zone_id = 1
        _vpc.reverse_hosted_zone_id = 2

        _vpc.terminate_instances()

        instances_obj_mock.terminate.assert_called_once_with(
            hosted_zone_id=1,
            reverse_hosted_zone_id=2,
        )
Exemplo n.º 28
0
    def test_load_security_group_ids(self, connectionMock):
        _connectionMock = connectionMock()
        _connectionMock.describe_security_groups = mock.Mock(
            return_value={
                'SecurityGroups': [{
                    'GroupId': 'secgroup-id-0',
                    'GroupName': 'foobar'
                }, {
                    'GroupId': 'secgroup-id-1',
                    'GroupName': 'default'
                }]
            })

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.load_security_group_ids()

        _connectionMock.describe_security_groups.assert_called_once_with(
            Filters=[{
                'Name': 'vpc-id',
                'Values': [self.vpc_id_mock]
            }])
Exemplo n.º 29
0
    def cell_resources(ctx, vpc_id, subnet_name):
        """Show Cell"""
        domain = ctx.obj['DOMAIN']
        connection.Connection.context.domain = domain
        if subnet_name:
            click.echo(
                pprint(subnet.Subnet(name=subnet_name, vpc_id=vpc_id).show()))
            return

        if vpc_id:
            vpcs = [vpc_id]
        else:
            vpcs = [_vpc.id for _vpc in vpc.VPC.all()]

        result = []

        for v in vpcs:
            subnets = vpc.VPC(id=v).list_cells()
            if subnets:
                result.append({'VpcId': v, 'Subnets': subnets})

        click.echo(pprint(result))
Exemplo n.º 30
0
    def test_associate_dhcp_options(self, connectionMock):
        connectionMock.context.domain = 'cloud.ms.com'
        _connectionMock = connectionMock()
        _connectionMock.create_dhcp_options = mock.Mock(
            return_value={'DhcpOptions': {
                'DhcpOptionsId': 'some-dhcp-id'
            }})
        _connectionMock.associate_dhcp_options = mock.Mock()

        _vpc = vpc.VPC(id=self.vpc_id_mock)
        _vpc.associate_dhcp_options()

        _connectionMock.create_dhcp_options.assert_called_once_with(
            DhcpConfigurations=[{
                'Key': 'domain-name',
                'Values': ['cloud.ms.com']
            }, {
                'Key': 'domain-name-servers',
                'Values': ['AmazonProvidedDNS']
            }])
        _connectionMock.associate_dhcp_options.assert_called_once_with(
            DhcpOptionsId='some-dhcp-id', VpcId=self.vpc_id_mock)