Merge "Define fullstack router/network/subnet management fixture"

This commit is contained in:
Jenkins 2015-07-23 14:02:47 +00:00 committed by Gerrit Code Review
commit d4e6e9ab42
4 changed files with 82 additions and 31 deletions

View File

@ -18,6 +18,7 @@ from oslo_db.sqlalchemy import test_base
from neutron.db.migration.models import head # noqa
from neutron.db import model_base
from neutron.tests.common import base
from neutron.tests.fullstack.resources import client as client_resource
class BaseFullStackTestCase(base.MySQLTestCase):
@ -35,6 +36,8 @@ class BaseFullStackTestCase(base.MySQLTestCase):
self.useFixture(self.environment)
self.client = self.environment.neutron_server.client
self.safe_client = self.useFixture(
client_resource.ClientFixture(self.client))
def get_name(self):
class_name, test_name = self.id().split(".")[-2:]

View File

@ -0,0 +1,72 @@
# Copyright (c) 2015 Thales Services SAS
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
import fixtures
from neutron.tests import base
class ClientFixture(fixtures.Fixture):
"""Manage and cleanup neutron resources."""
def __init__(self, client):
super(ClientFixture, self).__init__()
self.client = client
def _create_resource(self, resource_type, spec):
create = getattr(self.client, 'create_%s' % resource_type)
delete = getattr(self.client, 'delete_%s' % resource_type)
body = {resource_type: spec}
resp = create(body=body)
data = resp[resource_type]
self.addCleanup(delete, data['id'])
return data
def create_router(self, tenant_id, name=None):
resource_type = 'router'
name = name or base.get_rand_name(prefix=resource_type)
spec = {'tenant_id': tenant_id, 'name': name}
return self._create_resource(resource_type, spec)
def create_network(self, tenant_id, name=None):
resource_type = 'network'
name = name or base.get_rand_name(prefix=resource_type)
spec = {'tenant_id': tenant_id, 'name': name}
return self._create_resource(resource_type, spec)
def create_subnet(self, tenant_id, network_id,
cidr, gateway_ip=None, ip_version=4,
name=None, enable_dhcp=True):
resource_type = 'subnet'
name = name or base.get_rand_name(prefix=resource_type)
spec = {'tenant_id': tenant_id, 'network_id': network_id, 'name': name,
'cidr': cidr, 'ip_version': ip_version,
'enable_dhcp': enable_dhcp}
if gateway_ip:
spec['gateway_ip'] = gateway_ip
return self._create_resource(resource_type, spec)
def add_router_interface(self, router_id, subnet_id):
body = {'subnet_id': subnet_id}
self.client.add_interface_router(router=router_id, body=body)
self.addCleanup(self.client.remove_interface_router,
router=router_id, body=body)

View File

@ -56,39 +56,15 @@ class TestLegacyL3Agent(base.BaseFullStackTestCase):
utils.wait_until_true(lambda: ip.netns.exists(ns_name))
def test_namespace_exists(self):
uuid = uuidutils.generate_uuid()
tenant_id = uuidutils.generate_uuid()
router = self.client.create_router(
body={'router': {'name': 'router-test',
'tenant_id': uuid}})
router = self.safe_client.create_router(tenant_id)
network = self.safe_client.create_network(tenant_id)
subnet = self.safe_client.create_subnet(
tenant_id, network['id'], '20.0.0.0/24', gateway_ip='20.0.0.1')
self.safe_client.add_router_interface(router['id'], subnet['id'])
network = self.client.create_network(
body={'network': {'name': 'network-test',
'tenant_id': uuid}})
subnet = self.client.create_subnet(
body={'subnet': {'name': 'subnet-test',
'tenant_id': uuid,
'network_id': network['network']['id'],
'cidr': '20.0.0.0/24',
'gateway_ip': '20.0.0.1',
'ip_version': 4,
'enable_dhcp': True}})
self.client.add_interface_router(
router=router['router']['id'],
body={'subnet_id': subnet['subnet']['id']})
router_id = router['router']['id']
namespace = "%s@%s" % (
self._get_namespace(router_id),
self._get_namespace(router['id']),
self.environment.l3_agent.get_namespace_suffix(), )
self._assert_namespace_exists(namespace)
self.client.remove_interface_router(
router=router['router']['id'],
body={'subnet_id': subnet['subnet']['id']})
self.client.delete_subnet(subnet['subnet']['id'])
self.client.delete_network(network['network']['id'])
self.client.delete_router(router['router']['id'])