Add skip if public_network_id is not specified
If public_network_id is not specified in tempest.conf, the testcases using it should be skipped, otherwize we will get errors like: BadRequest: Bad request Details: {u'message': u"Invalid input for external_gateway_info. Reason: '' is not a valid UUID.", u'type': u'HTTPBadRequest', u'detail': u''} Besides, _create_router in dynamic_creds will try to create_router using self.public_network_id as external_gateway_info, which will also raise Error when self.public_network_id is None, so here is to pass external_gateway_info to create_router only when self.public_network_id is not None. Change-Id: I567f9a51d301bcfea782d549298dbd3a598f3b85
This commit is contained in:
parent
c7b487aba7
commit
6b7040a511
|
@ -13,6 +13,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest.api.compute.floating_ips import base
|
||||
from tempest import config
|
||||
from tempest.lib.common.utils import test_utils
|
||||
|
@ -86,6 +88,8 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest):
|
|||
|
||||
@decorators.idempotent_id('307efa27-dc6f-48a0-8cd2-162ce3ef0b52')
|
||||
@test.services('network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_associate_disassociate_floating_ip(self):
|
||||
# Positive test:Associate and disassociate the provided floating IP
|
||||
# to a specific server should be successful
|
||||
|
@ -107,6 +111,8 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest):
|
|||
|
||||
@decorators.idempotent_id('6edef4b2-aaf1-4abc-bbe3-993e2561e0fe')
|
||||
@test.services('network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_associate_already_associated_floating_ip(self):
|
||||
# positive test:Association of an already associated floating IP
|
||||
# to specific server should change the association of the Floating IP
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest.api.compute import base
|
||||
from tempest.common.utils import data_utils
|
||||
from tempest.common import waiters
|
||||
|
@ -85,6 +87,8 @@ class ServerRescueTestJSON(base.BaseV2ComputeTest):
|
|||
'ACTIVE')
|
||||
|
||||
@decorators.idempotent_id('4842e0cf-e87d-4d9d-b61f-f4791da3cacc')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_rescued_vm_associate_dissociate_floating_ip(self):
|
||||
# Rescue the server
|
||||
self.servers_client.rescue_server(
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# 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 testtools
|
||||
|
||||
from tempest.api.network import base
|
||||
from tempest import config
|
||||
|
@ -27,6 +28,8 @@ class ExternalNetworksAdminNegativeTestJSON(base.BaseAdminNetworkTest):
|
|||
|
||||
@test.attr(type=['negative'])
|
||||
@decorators.idempotent_id('d402ae6c-0be0-4d8e-833b-a738895d98d0')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_create_port_with_precreated_floatingip_as_fixed_ip(self):
|
||||
# NOTE: External networks can be used to create both floating-ip as
|
||||
# well as instance-ip. So, creating an instance-ip with a value of a
|
||||
|
|
|
@ -31,6 +31,9 @@ class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):
|
|||
if not test.is_extension_enabled('router', 'network'):
|
||||
msg = "router extension not enabled."
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.network.public_network_id:
|
||||
msg = "The public_network_id option must be specified."
|
||||
raise cls.skipException(msg)
|
||||
|
||||
@classmethod
|
||||
def setup_clients(cls):
|
||||
|
|
|
@ -46,6 +46,9 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
|
|||
if not test.is_extension_enabled('router', 'network'):
|
||||
msg = "router extension not enabled."
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.network.public_network_id:
|
||||
msg = "The public_network_id option must be specified."
|
||||
raise cls.skipException(msg)
|
||||
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
|
|
|
@ -37,6 +37,9 @@ class FloatingIPNegativeTestJSON(base.BaseNetworkTest):
|
|||
if not test.is_extension_enabled('router', 'network'):
|
||||
msg = "router extension not enabled."
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.network.public_network_id:
|
||||
msg = "The public_network_id option must be specified."
|
||||
raise cls.skipException(msg)
|
||||
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
# under the License.
|
||||
|
||||
import netaddr
|
||||
import testtools
|
||||
|
||||
from tempest.api.network import base_routers as base
|
||||
from tempest.common.utils import data_utils
|
||||
|
@ -42,6 +43,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@test.attr(type='smoke')
|
||||
@decorators.idempotent_id('f64403e2-8483-4b34-8ccd-b09a87bcc68c')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_create_show_list_update_delete_router(self):
|
||||
# Create a router
|
||||
router = self._create_router(
|
||||
|
@ -89,6 +92,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@decorators.idempotent_id('847257cc-6afd-4154-b8fb-af49f5670ce8')
|
||||
@test.requires_ext(extension='ext-gw-mode', service='network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_create_router_with_default_snat_value(self):
|
||||
# Create a router with default snat rule
|
||||
router = self._create_router(
|
||||
|
@ -99,6 +104,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@decorators.idempotent_id('ea74068d-09e9-4fd7-8995-9b6a1ace920f')
|
||||
@test.requires_ext(extension='ext-gw-mode', service='network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_create_router_with_snat_explicit(self):
|
||||
name = data_utils.rand_name('snat-router')
|
||||
# Create a router enabling snat attributes
|
||||
|
@ -184,6 +191,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
self.assertIn(subnet_id, public_subnet_ids)
|
||||
|
||||
@decorators.idempotent_id('6cc285d8-46bf-4f36-9b1a-783e3008ba79')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_update_router_set_gateway(self):
|
||||
router = self._create_router()
|
||||
self.routers_client.update_router(
|
||||
|
@ -198,6 +207,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@decorators.idempotent_id('b386c111-3b21-466d-880c-5e72b01e1a33')
|
||||
@test.requires_ext(extension='ext-gw-mode', service='network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_update_router_set_gateway_with_snat_explicit(self):
|
||||
router = self._create_router()
|
||||
self.admin_routers_client.update_router(
|
||||
|
@ -213,6 +224,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@decorators.idempotent_id('96536bc7-8262-4fb2-9967-5c46940fa279')
|
||||
@test.requires_ext(extension='ext-gw-mode', service='network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_update_router_set_gateway_without_snat(self):
|
||||
router = self._create_router()
|
||||
self.admin_routers_client.update_router(
|
||||
|
@ -227,6 +240,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
self._verify_gateway_port(router['id'])
|
||||
|
||||
@decorators.idempotent_id('ad81b7ee-4f81-407b-a19c-17e623f763e8')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_update_router_unset_gateway(self):
|
||||
router = self._create_router(
|
||||
external_network_id=CONF.network.public_network_id)
|
||||
|
@ -241,6 +256,8 @@ class RoutersTest(base.BaseRouterTest):
|
|||
|
||||
@decorators.idempotent_id('f2faf994-97f4-410b-a831-9bc977b64374')
|
||||
@test.requires_ext(extension='ext-gw-mode', service='network')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
def test_update_router_reset_gateway_without_snat(self):
|
||||
router = self._create_router(
|
||||
external_network_id=CONF.network.public_network_id)
|
||||
|
|
|
@ -293,12 +293,12 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
|
|||
return resp_body['subnet']
|
||||
|
||||
def _create_router(self, router_name, tenant_id):
|
||||
external_net_id = dict(
|
||||
network_id=self.public_network_id)
|
||||
resp_body = self.routers_admin_client.create_router(
|
||||
name=router_name,
|
||||
external_gateway_info=external_net_id,
|
||||
tenant_id=tenant_id)
|
||||
kwargs = {'name': router_name,
|
||||
'tenant_id': tenant_id}
|
||||
if self.public_network_id:
|
||||
kwargs['external_gateway_info'] = dict(
|
||||
network_id=self.public_network_id)
|
||||
resp_body = self.routers_admin_client.create_router(**kwargs)
|
||||
return resp_body['router']
|
||||
|
||||
def _add_router_interface(self, router_id, subnet_id):
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest.common import custom_matchers
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
|
@ -99,6 +101,8 @@ class TestMinimumBasicScenario(manager.ScenarioTest):
|
|||
return address
|
||||
|
||||
@decorators.idempotent_id('bdbb5441-9204-419d-a225-b4fdbfb1a1a8')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'volume', 'image', 'network')
|
||||
def test_minimum_basic_scenario(self):
|
||||
image = self.glance_image_create()
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest.common import compute
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
|
@ -73,11 +75,15 @@ class TestShelveInstance(manager.ScenarioTest):
|
|||
self.assertEqual(timestamp, timestamp2)
|
||||
|
||||
@decorators.idempotent_id('1164e700-0af0-4a4c-8792-35909a88743c')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'network', 'image')
|
||||
def test_shelve_instance(self):
|
||||
self._create_server_then_shelve_and_unshelve()
|
||||
|
||||
@decorators.idempotent_id('c1b6318c-b9da-490b-9c67-9339b627271f')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'volume', 'network', 'image')
|
||||
def test_shelve_volume_backed_instance(self):
|
||||
self._create_server_then_shelve_and_unshelve(boot_from_volume=True)
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest import config
|
||||
from tempest.lib import decorators
|
||||
from tempest.scenario import manager
|
||||
|
@ -39,6 +41,8 @@ class TestSnapshotPattern(manager.ScenarioTest):
|
|||
raise cls.skipException("Snapshotting is not available.")
|
||||
|
||||
@decorators.idempotent_id('608e604b-1d63-4a82-8e3e-91bc665c90b4')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'network', 'image')
|
||||
def test_snapshot_pattern(self):
|
||||
# prepare for booting an instance
|
||||
|
|
|
@ -91,6 +91,8 @@ class TestStampPattern(manager.ScenarioTest):
|
|||
@decorators.idempotent_id('10fd234a-515c-41e5-b092-8323060598c5')
|
||||
@testtools.skipUnless(CONF.compute_feature_enabled.snapshot,
|
||||
'Snapshotting is not available.')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'network', 'volume', 'image')
|
||||
def test_stamp_pattern(self):
|
||||
# prepare for booting an instance
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
# under the License.
|
||||
|
||||
from oslo_log import log as logging
|
||||
import testtools
|
||||
|
||||
from tempest.common.utils import data_utils
|
||||
from tempest.common import waiters
|
||||
|
@ -98,6 +99,8 @@ class TestVolumeBootPattern(manager.ScenarioTest):
|
|||
|
||||
@decorators.idempotent_id('557cd2c2-4eb8-4dce-98be-f86765ff311b')
|
||||
@test.attr(type='smoke')
|
||||
@testtools.skipUnless(CONF.network.public_network_id,
|
||||
'The public_network_id option must be specified.')
|
||||
@test.services('compute', 'volume', 'image')
|
||||
def test_volume_boot_pattern(self):
|
||||
|
||||
|
|
Loading…
Reference in New Issue