config option for default VPC

Change-Id: I49dc89811d3f394827ccabbeac364cf6eaeac5ce
This commit is contained in:
tikitavi 2017-01-13 18:39:03 +03:00
parent 5cb1921b84
commit 8fc0ad70bc
7 changed files with 28 additions and 26 deletions

View File

@ -33,6 +33,9 @@ ec2_opts = [
cfg.BoolOpt('full_vpc_support',
default=True,
help='True if server supports Neutron for full VPC access'),
cfg.BoolOpt('disable_ec2_classic',
help='True if server does not support EC2 Classic mode '
'in favor of default VPC'),
]
CONF = cfg.CONF

View File

@ -164,8 +164,9 @@ def _create_vpc(context, cidr_block, is_default=False):
def _check_and_create_default_vpc(context):
if not any(vpc.get('is_default')
for vpc in db_api.get_items(context, 'vpc')):
if (CONF.disable_ec2_classic and
not any(vpc.get('is_default')
for vpc in db_api.get_items(context, 'vpc'))):
try:
_create_vpc(context, DEFAULT_VPC_CIDR_BLOCK, is_default=True)
except Exception:

View File

@ -134,8 +134,7 @@ class AddressTestCase(base.ApiTestCase):
fakes.ID_OS_INSTANCE_1,
fakes.IP_ADDRESS_1)
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_associate_address_vpc(self, check_and_create):
def test_associate_address_vpc(self):
address.address_engine = (
address.AddressEngineNeutron())
@ -262,8 +261,7 @@ class AddressTestCase(base.ApiTestCase):
{'PublicIp': fakes.IP_ADDRESS_1,
'InstanceId': fakes.ID_EC2_INSTANCE_2})
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_associate_address_invalid_vpc_parameters(self, check_and_create):
def test_associate_address_invalid_vpc_parameters(self):
address.address_engine = (
address.AddressEngineNeutron())
@ -341,8 +339,7 @@ class AddressTestCase(base.ApiTestCase):
'InstanceId': fakes.ID_EC2_INSTANCE_1})
@tools.screen_unexpected_exception_logs
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_associate_address_vpc_rollback(self, check_and_create):
def test_associate_address_vpc_rollback(self):
address.address_engine = (
address.AddressEngineNeutron())
self.set_mock_db_items(fakes.DB_ADDRESS_1, fakes.DB_IGW_1,

View File

@ -220,8 +220,7 @@ class IgwTestCase(base.ApiTestCase):
self.set_mock_db_items(fakes.DB_IGW_1)
do_check('DependencyViolation')
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_igw(self, check_and_create):
def test_describe_igw(self):
self.set_mock_db_items(fakes.DB_IGW_1, fakes.DB_IGW_2)
resp = self.execute('DescribeInternetGateways', {})
@ -247,6 +246,8 @@ class IgwTestCase(base.ApiTestCase):
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_internet_gateways_no_default_vpc(self, check_and_create):
self.configure(disable_ec2_classic=True)
def mock_check_and_create(context):
self.set_mock_db_items(fakes.DB_VPC_DEFAULT,
fakes.DB_IGW_DEFAULT)

View File

@ -726,8 +726,7 @@ class RouteTableTestCase(base.ApiTestCase):
'DependencyViolation', 'DeleteRouteTable',
{'RouteTableId': fakes.ID_EC2_ROUTE_TABLE_2})
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_route_tables(self, check_and_create):
def test_describe_route_tables(self):
self.set_mock_db_items(
fakes.DB_ROUTE_TABLE_1, fakes.DB_ROUTE_TABLE_2,
fakes.DB_ROUTE_TABLE_3, fakes.DB_SUBNET_1, fakes.DB_SUBNET_2,
@ -770,8 +769,7 @@ class RouteTableTestCase(base.ApiTestCase):
'DescribeRouteTables', 'routeTableSet',
fakes.ID_EC2_ROUTE_TABLE_1, 'routeTableId')
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_route_tables_variations(self, check_and_create):
def test_describe_route_tables_variations(self):
igw_1 = tools.purge_dict(fakes.DB_IGW_1, ('vpc_id',))
igw_2 = tools.update_dict(fakes.DB_IGW_2,
{'vpc_id': fakes.ID_EC2_VPC_2})
@ -1133,6 +1131,8 @@ class RouteTableTestCase(base.ApiTestCase):
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_route_tables_no_default_vpc(self, check_and_create):
self.configure(disable_ec2_classic=True)
def mock_check_and_create(context):
self.set_mock_db_items(fakes.DB_VPC_DEFAULT,
fakes.DB_IGW_DEFAULT,

View File

@ -253,8 +253,7 @@ class SubnetTestCase(base.ApiTestCase):
self.neutron.add_interface_router.assert_called_once_with(
fakes.ID_OS_ROUTER_1, {'subnet_id': fakes.ID_OS_SUBNET_1})
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_subnets(self, check_and_create):
def test_describe_subnets(self):
self.set_mock_db_items(fakes.DB_SUBNET_1, fakes.DB_SUBNET_2)
self.neutron.list_subnets.return_value = (
{'subnets': [fakes.OS_SUBNET_1, fakes.OS_SUBNET_2]})
@ -290,8 +289,7 @@ class SubnetTestCase(base.ApiTestCase):
'DescribeSubnets', 'subnetSet',
fakes.ID_EC2_SUBNET_2, 'subnetId')
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_subnets_not_consistent_os_subnet(self, check_and_create):
def test_describe_subnets_not_consistent_os_subnet(self):
self.set_mock_db_items(fakes.DB_SUBNET_1, fakes.DB_SUBNET_2)
self.neutron.list_subnets.return_value = (
{'subnets': [fakes.OS_SUBNET_2]})
@ -303,6 +301,8 @@ class SubnetTestCase(base.ApiTestCase):
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_describe_subnets_no_default_vpc(self, check_and_create):
self.configure(disable_ec2_classic=True)
def mock_check_and_create(context):
self.set_mock_db_items(fakes.DB_VPC_DEFAULT,
fakes.DB_SUBNET_DEFAULT)

View File

@ -74,8 +74,7 @@ class VpcTestCase(base.ApiTestCase):
self.neutron.create_router.assert_called_with({'router': {}})
self.assertEqual(0, self.db_api.add_item.call_count)
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_delete_vpc(self, check_and_create):
def test_delete_vpc(self):
self.set_mock_db_items(fakes.DB_VPC_1, fakes.DB_ROUTE_TABLE_1,
fakes.DB_SECURITY_GROUP_1)
@ -102,8 +101,7 @@ class VpcTestCase(base.ApiTestCase):
self.assertEqual(0, self.neutron.delete_router.call_count)
self.assertEqual(0, self.db_api.delete_item.call_count)
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_delete_vpc_dependency_violation(self, check_and_create):
def test_delete_vpc_dependency_violation(self):
def do_check():
self.assert_execution_error('DependencyViolation', 'DeleteVpc',
{'VpcId': fakes.ID_EC2_VPC_1})
@ -139,8 +137,7 @@ class VpcTestCase(base.ApiTestCase):
fakes.DB_VPN_GATEWAY_1, fakes.DB_VPC_1, )
do_check()
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_delete_vpc_not_conststent_os_vpc(self, check_and_create):
def test_delete_vpc_not_conststent_os_vpc(self):
self.set_mock_db_items(fakes.DB_VPC_1, fakes.DB_ROUTE_TABLE_1)
def check_response(resp):
@ -166,8 +163,7 @@ class VpcTestCase(base.ApiTestCase):
check_response(resp)
@tools.screen_unexpected_exception_logs
@mock.patch('ec2api.api.ec2utils.check_and_create_default_vpc')
def test_delete_vpc_rollback(self, check_and_create):
def test_delete_vpc_rollback(self):
self.set_mock_db_items(fakes.DB_VPC_1, fakes.DB_ROUTE_TABLE_1)
self.neutron.delete_router.side_effect = Exception()
@ -324,6 +320,7 @@ class VpcPrivateTestCase(base.BaseTestCase):
@mock.patch('ec2api.api.vpc._create_vpc')
def test_check_and_create_default_vpc(self, create_vpc):
self.configure(disable_ec2_classic=True)
vpc_api._check_and_create_default_vpc(self.context)
create_vpc.assert_called_once_with(mock.ANY, fakes.CIDR_VPC_DEFAULT,
@ -342,6 +339,8 @@ class VpcPrivateTestCase(base.BaseTestCase):
create_internet_gateway,
attach_internet_gateway, create_subnet,
create_route, detach_internet_gateway):
self.configure(disable_ec2_classic=True)
self.neutron.create_router.side_effect = (
tools.get_neutron_create('router', fakes.ID_OS_ROUTER_DEFAULT))
self.nova.security_groups.list.return_value = (
@ -386,6 +385,7 @@ class VpcPrivateTestCase(base.BaseTestCase):
@mock.patch('ec2api.api.vpc._create_vpc')
def test_check_and_create_default_vpc_failed(self, create_vpc):
self.configure(disable_ec2_classic=True)
create_vpc.side_effect = Exception()
with fixtures.LoggerFixture(
format='[%(levelname)s] %(message)s') as log: