Merge "Add API test for L3 Flavors"
This commit is contained in:
commit
dc6e83771c
|
@ -0,0 +1,65 @@
|
|||
#
|
||||
# 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 tempest import test
|
||||
|
||||
from neutron.tests.tempest.api import base_routers as base
|
||||
|
||||
|
||||
class RoutersFlavorTestCase(base.BaseRouterTest):
|
||||
|
||||
@classmethod
|
||||
@test.requires_ext(extension="router", service="network")
|
||||
@test.requires_ext(extension="flavors", service="network")
|
||||
def skip_checks(cls):
|
||||
super(RoutersFlavorTestCase, cls).skip_checks()
|
||||
|
||||
@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')
|
||||
sp = cls.admin_client.create_service_profile(driver=driver)
|
||||
cls.service_profiles.append(sp['service_profile'])
|
||||
cls.flavor = cls.create_flavor(
|
||||
name='special_flavor',
|
||||
description='econonomy class',
|
||||
service_type='L3_ROUTER_NAT')
|
||||
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']))
|
||||
|
||||
@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()
|
||||
|
||||
@test.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'])
|
||||
|
||||
# ensure client can create router with flavor
|
||||
router = self.create_router('name', flavor_id=flavor['id'])
|
||||
self.assertEqual(flavor['id'], router['flavor_id'])
|
|
@ -795,6 +795,29 @@ class NetworkClientJSON(service_client.RestClient):
|
|||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def create_flavor_service_profile(self, flavor_id, service_profile_id):
|
||||
body = jsonutils.dumps({'service_profile': {'id': service_profile_id}})
|
||||
uri = '%s/flavors/%s/service_profiles' % (self.uri_prefix, flavor_id)
|
||||
resp, body = self.post(uri, body)
|
||||
self.expected_success(201, resp.status)
|
||||
body = jsonutils.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def list_flavor_service_profiles(self, flavor_id):
|
||||
uri = '%s/flavors/%s/service_profiles' % (self.uri_prefix, flavor_id)
|
||||
resp, body = self.get(uri)
|
||||
self.expected_success(200, resp.status)
|
||||
body = jsonutils.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_flavor_service_profile(self, flavor_id, service_profile_id):
|
||||
uri = '%s/flavors/%s/service_profiles/%s' % (self.uri_prefix,
|
||||
flavor_id,
|
||||
service_profile_id)
|
||||
resp, body = self.delete(uri)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def create_security_group_rule(self, direction, security_group_id,
|
||||
**kwargs):
|
||||
post_body = {'security_group_rule': kwargs}
|
||||
|
|
Loading…
Reference in New Issue