667d3d3260
* switch from neutron.tests.tempest to neutron_tempest_plugin * Cleaned up README.rst and setup.cfg * Use neutron_tempest_plugin as a tempest plugin package * Fixed gitreview * Keeping flake8 Ignores in tox.ini as tempest plugin is imported from neutron codebase. Change-Id: I42d389836e72813fdeebc797a577f4a8ac2ee603
105 lines
4.8 KiB
Python
105 lines
4.8 KiB
Python
#
|
|
# 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.
|
|
|
|
from neutron_lib.plugins import constants
|
|
from tempest.lib import decorators
|
|
from tempest.lib import exceptions as lib_exc
|
|
import testtools
|
|
|
|
from neutron_tempest_plugin.api import base_routers as base
|
|
|
|
|
|
class RoutersFlavorTestCase(base.BaseRouterTest):
|
|
|
|
required_extensions = ['router', 'flavors', 'l3-flavors']
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(RoutersFlavorTestCase, cls).resource_setup()
|
|
cls.service_profiles = []
|
|
cls.flavor_service_profiles = []
|
|
# make a flavor based on legacy router for regular tenant to use
|
|
driver = ('neutron.services.l3_router.service_providers.'
|
|
'single_node.SingleNodeDriver')
|
|
try:
|
|
sp = cls.admin_client.create_service_profile(driver=driver)
|
|
except lib_exc.NotFound as e:
|
|
if e.resp_body['type'] == 'ServiceProfileDriverNotFound':
|
|
raise cls.skipException("%s is not available" % driver)
|
|
raise
|
|
cls.service_profiles.append(sp['service_profile'])
|
|
cls.flavor = cls.create_flavor(
|
|
name='special_flavor',
|
|
description='econonomy class',
|
|
service_type=constants.L3)
|
|
cls.admin_client.create_flavor_service_profile(
|
|
cls.flavor['id'], sp['service_profile']['id'])
|
|
cls.flavor_service_profiles.append((cls.flavor['id'],
|
|
sp['service_profile']['id']))
|
|
# make another with a different driver
|
|
driver = ('neutron.services.l3_router.service_providers.'
|
|
'dvr.DvrDriver')
|
|
try:
|
|
sp = cls.admin_client.create_service_profile(driver=driver)
|
|
except lib_exc.NotFound as e:
|
|
if e.resp_body['type'] == 'ServiceProfileDriverNotFound':
|
|
raise cls.skipException("%s is not available" % driver)
|
|
raise
|
|
cls.service_profiles.append(sp['service_profile'])
|
|
cls.prem_flavor = cls.create_flavor(
|
|
name='better_special_flavor',
|
|
description='econonomy comfort',
|
|
service_type=constants.L3)
|
|
cls.admin_client.create_flavor_service_profile(
|
|
cls.prem_flavor['id'], sp['service_profile']['id'])
|
|
cls.flavor_service_profiles.append((cls.prem_flavor['id'],
|
|
sp['service_profile']['id']))
|
|
|
|
@classmethod
|
|
def resource_cleanup(cls):
|
|
for flavor_id, service_profile_id in cls.flavor_service_profiles:
|
|
cls.admin_client.delete_flavor_service_profile(flavor_id,
|
|
service_profile_id)
|
|
for service_profile in cls.service_profiles:
|
|
cls.admin_client.delete_service_profile(
|
|
service_profile['id'])
|
|
super(RoutersFlavorTestCase, cls).resource_cleanup()
|
|
|
|
@decorators.idempotent_id('a4d01977-e968-4983-b4d9-824ea6c33f4b')
|
|
def test_create_router_with_flavor(self):
|
|
# ensure regular client can see flavor
|
|
flavors = self.client.list_flavors(id=self.flavor['id'])
|
|
flavor = flavors['flavors'][0]
|
|
self.assertEqual('special_flavor', flavor['name'])
|
|
flavors = self.client.list_flavors(id=self.prem_flavor['id'])
|
|
prem_flavor = flavors['flavors'][0]
|
|
self.assertEqual('better_special_flavor', prem_flavor['name'])
|
|
|
|
# ensure client can create router with both flavors
|
|
router = self.create_router('name', flavor_id=flavor['id'])
|
|
self.assertEqual(flavor['id'], router['flavor_id'])
|
|
router = self.create_router('name', flavor_id=prem_flavor['id'])
|
|
self.assertEqual(prem_flavor['id'], router['flavor_id'])
|
|
|
|
@decorators.idempotent_id('30e73858-a0fc-409c-a2e0-e9cd2826f6a2')
|
|
def test_delete_router_flavor_in_use(self):
|
|
self.create_router('name', flavor_id=self.flavor['id'])
|
|
with testtools.ExpectedException(lib_exc.Conflict):
|
|
self.admin_client.delete_flavor(self.flavor['id'])
|
|
|
|
@decorators.idempotent_id('83939cf7-5070-41bc-9a3e-cd9f22df2186')
|
|
def test_badrequest_on_requesting_flags_and_flavor(self):
|
|
with testtools.ExpectedException(lib_exc.BadRequest):
|
|
self.admin_client.create_router(
|
|
'name', flavor_id=self.flavor['id'], distributed=True)
|