Migrate to testtools for functional tests
The standard in OpenStack is to use testtools not unittest. Use the base test class which is based on testtools. This class also sets up loggers appropriately. unittest has an assertEqual method that is more appropriate. Replace use of equal comparisons to None with assertIsNone. Replace use of setUpClass and tearDownClass with setUp and tearDown. Change-Id: Ie0f47dc7c0905164030953ba2d2633bd095782ca
This commit is contained in:
@@ -227,7 +227,6 @@
|
|||||||
- openstacksdk-ansible-devel-functional-devstack
|
- openstacksdk-ansible-devel-functional-devstack
|
||||||
- openstacksdk-ansible-functional-devstack
|
- openstacksdk-ansible-functional-devstack
|
||||||
- openstacksdk-functional-devstack
|
- openstacksdk-functional-devstack
|
||||||
- openstacksdk-functional-devstack-legacy
|
|
||||||
- openstacksdk-functional-devstack-magnum
|
- openstacksdk-functional-devstack-magnum
|
||||||
- openstacksdk-functional-devstack-python3
|
- openstacksdk-functional-devstack-python3
|
||||||
gate:
|
gate:
|
||||||
|
@@ -13,9 +13,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
# TODO(shade) Remove all use of setUpClass and tearDownClass. setUp and
|
|
||||||
# addCleanup should be used instead.
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
@@ -69,7 +66,7 @@ class TestCase(testtools.TestCase):
|
|||||||
formatter = logging.Formatter('%(asctime)s %(name)-32s %(message)s')
|
formatter = logging.Formatter('%(asctime)s %(name)-32s %(message)s')
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
|
|
||||||
logger = logging.getLogger('shade')
|
logger = logging.getLogger('openstack')
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
logger.addHandler(handler)
|
logger.addHandler(handler)
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import testtools
|
||||||
|
|
||||||
from examples.compute import create
|
from examples.compute import create
|
||||||
from examples.compute import delete
|
from examples.compute import delete
|
||||||
@@ -21,16 +21,16 @@ from examples.network import find as network_find
|
|||||||
from examples.network import list as network_list
|
from examples.network import list as network_list
|
||||||
|
|
||||||
|
|
||||||
class TestCompute(unittest.TestCase):
|
class TestCompute(testtools.TestCase):
|
||||||
"""Test the compute examples
|
"""Test the compute examples
|
||||||
|
|
||||||
The purpose of these tests is to ensure the examples run without erring
|
The purpose of these tests is to ensure the examples run without erring
|
||||||
out.
|
out.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestCompute, self).setUp()
|
||||||
cls.conn = connect.create_connection_from_config()
|
self.conn = connect.create_connection_from_config()
|
||||||
|
|
||||||
def test_compute(self):
|
def test_compute(self):
|
||||||
compute_list.list_servers(self.conn)
|
compute_list.list_servers(self.conn)
|
||||||
|
@@ -10,22 +10,22 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import testtools
|
||||||
|
|
||||||
from examples import connect
|
from examples import connect
|
||||||
from examples.identity import list as identity_list
|
from examples.identity import list as identity_list
|
||||||
|
|
||||||
|
|
||||||
class TestIdentity(unittest.TestCase):
|
class TestIdentity(testtools.TestCase):
|
||||||
"""Test the identity examples
|
"""Test the identity examples
|
||||||
|
|
||||||
The purpose of these tests is to ensure the examples run without erring
|
The purpose of these tests is to ensure the examples run without erring
|
||||||
out.
|
out.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestIdentity, self).setUp()
|
||||||
cls.conn = connect.create_connection_from_config()
|
self.conn = connect.create_connection_from_config()
|
||||||
|
|
||||||
def test_identity(self):
|
def test_identity(self):
|
||||||
identity_list.list_users(self.conn)
|
identity_list.list_users(self.conn)
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import testtools
|
||||||
|
|
||||||
from examples import connect
|
from examples import connect
|
||||||
from examples.image import create as image_create
|
from examples.image import create as image_create
|
||||||
@@ -18,16 +18,16 @@ from examples.image import delete as image_delete
|
|||||||
from examples.image import list as image_list
|
from examples.image import list as image_list
|
||||||
|
|
||||||
|
|
||||||
class TestImage(unittest.TestCase):
|
class TestImage(testtools.TestCase):
|
||||||
"""Test the image examples
|
"""Test the image examples
|
||||||
|
|
||||||
The purpose of these tests is to ensure the examples run without erring
|
The purpose of these tests is to ensure the examples run without erring
|
||||||
out.
|
out.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestImage, self).setUp()
|
||||||
cls.conn = connect.create_connection_from_config()
|
self.conn = connect.create_connection_from_config()
|
||||||
|
|
||||||
def test_image(self):
|
def test_image(self):
|
||||||
image_list.list_images(self.conn)
|
image_list.list_images(self.conn)
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import testtools
|
||||||
|
|
||||||
from examples import connect
|
from examples import connect
|
||||||
from examples.network import create as network_create
|
from examples.network import create as network_create
|
||||||
@@ -19,16 +19,16 @@ from examples.network import find as network_find
|
|||||||
from examples.network import list as network_list
|
from examples.network import list as network_list
|
||||||
|
|
||||||
|
|
||||||
class TestNetwork(unittest.TestCase):
|
class TestNetwork(testtools.TestCase):
|
||||||
"""Test the network examples
|
"""Test the network examples
|
||||||
|
|
||||||
The purpose of these tests is to ensure the examples run without erring
|
The purpose of these tests is to ensure the examples run without erring
|
||||||
out.
|
out.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestNetwork, self).setUp()
|
||||||
cls.conn = connect.create_connection_from_config()
|
self.conn = connect.create_connection_from_config()
|
||||||
|
|
||||||
def test_network(self):
|
def test_network(self):
|
||||||
network_list.list_networks(self.conn)
|
network_list.list_networks(self.conn)
|
||||||
|
@@ -12,11 +12,10 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import openstack.config
|
import openstack.config
|
||||||
import time
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from keystoneauth1 import exceptions as _exceptions
|
from keystoneauth1 import exceptions as _exceptions
|
||||||
from openstack import connection
|
from openstack import connection
|
||||||
|
from openstack.tests import base
|
||||||
|
|
||||||
|
|
||||||
#: Defines the OpenStack Client Config (OCC) cloud key in your OCC config
|
#: Defines the OpenStack Client Config (OCC) cloud key in your OCC config
|
||||||
@@ -46,38 +45,34 @@ IMAGE_NAME = _get_resource_value('image_name', 'cirros-0.3.5-x86_64-disk')
|
|||||||
FLAVOR_NAME = _get_resource_value('flavor_name', 'm1.small')
|
FLAVOR_NAME = _get_resource_value('flavor_name', 'm1.small')
|
||||||
|
|
||||||
|
|
||||||
def service_exists(**kwargs):
|
class BaseFunctionalTest(base.TestCase):
|
||||||
"""Decorator function to check whether a service exists
|
|
||||||
|
|
||||||
Usage:
|
def setUp(self):
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
super(BaseFunctionalTest, self).setUp()
|
||||||
"Metering service does not exist")
|
self.conn = connection.from_config(cloud_name=TEST_CLOUD)
|
||||||
class TestMeter(base.BaseFunctionalTest):
|
|
||||||
...
|
|
||||||
|
|
||||||
:param kwargs: The kwargs needed to filter an endpoint.
|
def addEmptyCleanup(self, func, *args, **kwargs):
|
||||||
:returns: True if the service exists, otherwise False.
|
def cleanup():
|
||||||
"""
|
result = func(*args, **kwargs)
|
||||||
try:
|
self.assertIsNone(result)
|
||||||
conn = connection.from_config(cloud_name=TEST_CLOUD)
|
self.addCleanup(cleanup)
|
||||||
conn.session.get_endpoint(**kwargs)
|
|
||||||
|
|
||||||
return True
|
# TODO(shade) Replace this with call to conn.has_service when we've merged
|
||||||
except _exceptions.EndpointNotFound:
|
# the shade methods into Connection.
|
||||||
return False
|
def require_service(self, service_type, **kwargs):
|
||||||
|
"""Method to check whether a service exists
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
class TestMeter(base.BaseFunctionalTest):
|
||||||
|
...
|
||||||
|
def setUp(self):
|
||||||
|
super(TestMeter, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
class BaseFunctionalTest(unittest.TestCase):
|
:returns: True if the service exists, otherwise False.
|
||||||
|
"""
|
||||||
@classmethod
|
try:
|
||||||
def setUpClass(cls):
|
self.conn.session.get_endpoint(service_type=service_type, **kwargs)
|
||||||
cls.conn = connection.from_config(cloud_name=TEST_CLOUD)
|
except _exceptions.EndpointNotFound:
|
||||||
|
self.skipTest('Service {service_type} not found in cloud'.format(
|
||||||
@classmethod
|
service_type=service_type))
|
||||||
def assertIs(cls, expected, actual):
|
|
||||||
if expected != actual:
|
|
||||||
raise Exception(expected + ' != ' + actual)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def linger_for_delete(cls):
|
|
||||||
time.sleep(40)
|
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.block_store.v2 import snapshot as _snapshot
|
from openstack.block_store.v2 import snapshot as _snapshot
|
||||||
from openstack.block_store.v2 import volume as _volume
|
from openstack.block_store.v2 import volume as _volume
|
||||||
@@ -19,49 +18,50 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSnapshot(base.BaseFunctionalTest):
|
class TestSnapshot(base.BaseFunctionalTest):
|
||||||
|
|
||||||
SNAPSHOT_NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
SNAPSHOT_ID = None
|
super(TestSnapshot, self).setUp()
|
||||||
VOLUME_NAME = uuid.uuid4().hex
|
|
||||||
VOLUME_ID = None
|
|
||||||
|
|
||||||
@classmethod
|
self.SNAPSHOT_NAME = self.getUniqueString()
|
||||||
def setUpClass(cls):
|
self.SNAPSHOT_ID = None
|
||||||
super(TestSnapshot, cls).setUpClass()
|
self.VOLUME_NAME = self.getUniqueString()
|
||||||
volume = cls.conn.block_store.create_volume(
|
self.VOLUME_ID = None
|
||||||
name=cls.VOLUME_NAME,
|
|
||||||
|
volume = self.conn.block_store.create_volume(
|
||||||
|
name=self.VOLUME_NAME,
|
||||||
size=1)
|
size=1)
|
||||||
cls.conn.block_store.wait_for_status(volume,
|
self.conn.block_store.wait_for_status(
|
||||||
status='available',
|
volume,
|
||||||
failures=['error'],
|
status='available',
|
||||||
interval=2,
|
failures=['error'],
|
||||||
wait=120)
|
interval=2,
|
||||||
|
wait=120)
|
||||||
assert isinstance(volume, _volume.Volume)
|
assert isinstance(volume, _volume.Volume)
|
||||||
cls.assertIs(cls.VOLUME_NAME, volume.name)
|
self.assertEqual(self.VOLUME_NAME, volume.name)
|
||||||
cls.VOLUME_ID = volume.id
|
self.VOLUME_ID = volume.id
|
||||||
snapshot = cls.conn.block_store.create_snapshot(
|
snapshot = self.conn.block_store.create_snapshot(
|
||||||
name=cls.SNAPSHOT_NAME,
|
name=self.SNAPSHOT_NAME,
|
||||||
volume_id=cls.VOLUME_ID)
|
volume_id=self.VOLUME_ID)
|
||||||
cls.conn.block_store.wait_for_status(snapshot,
|
self.conn.block_store.wait_for_status(
|
||||||
status='available',
|
snapshot,
|
||||||
failures=['error'],
|
status='available',
|
||||||
interval=2,
|
failures=['error'],
|
||||||
wait=120)
|
interval=2,
|
||||||
|
wait=120)
|
||||||
assert isinstance(snapshot, _snapshot.Snapshot)
|
assert isinstance(snapshot, _snapshot.Snapshot)
|
||||||
cls.assertIs(cls.SNAPSHOT_NAME, snapshot.name)
|
self.assertEqual(self.SNAPSHOT_NAME, snapshot.name)
|
||||||
cls.SNAPSHOT_ID = snapshot.id
|
self.SNAPSHOT_ID = snapshot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
snapshot = self.conn.block_store.get_snapshot(self.SNAPSHOT_ID)
|
||||||
snapshot = cls.conn.block_store.get_snapshot(cls.SNAPSHOT_ID)
|
sot = self.conn.block_store.delete_snapshot(
|
||||||
sot = cls.conn.block_store.delete_snapshot(snapshot,
|
snapshot, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.conn.block_store.wait_for_delete(
|
||||||
cls.conn.block_store.wait_for_delete(snapshot,
|
snapshot, interval=2, wait=120)
|
||||||
interval=2,
|
self.assertIsNone(sot)
|
||||||
wait=120)
|
sot = self.conn.block_store.delete_volume(
|
||||||
cls.assertIs(None, sot)
|
self.VOLUME_ID, ignore_missing=False)
|
||||||
sot = cls.conn.block_store.delete_volume(cls.VOLUME_ID,
|
self.assertIsNone(sot)
|
||||||
ignore_missing=False)
|
super(TestSnapshot, self).tearDown()
|
||||||
cls.assertIs(None, sot)
|
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
sot = self.conn.block_store.get_snapshot(self.SNAPSHOT_ID)
|
sot = self.conn.block_store.get_snapshot(self.SNAPSHOT_ID)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.block_store.v2 import type as _type
|
from openstack.block_store.v2 import type as _type
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,22 +17,22 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestType(base.BaseFunctionalTest):
|
class TestType(base.BaseFunctionalTest):
|
||||||
|
|
||||||
TYPE_NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
TYPE_ID = None
|
super(TestType, self).setUp()
|
||||||
|
|
||||||
@classmethod
|
self.TYPE_NAME = self.getUniqueString()
|
||||||
def setUpClass(cls):
|
self.TYPE_ID = None
|
||||||
super(TestType, cls).setUpClass()
|
|
||||||
sot = cls.conn.block_store.create_type(name=cls.TYPE_NAME)
|
sot = self.conn.block_store.create_type(name=self.TYPE_NAME)
|
||||||
assert isinstance(sot, _type.Type)
|
assert isinstance(sot, _type.Type)
|
||||||
cls.assertIs(cls.TYPE_NAME, sot.name)
|
self.assertEqual(self.TYPE_NAME, sot.name)
|
||||||
cls.TYPE_ID = sot.id
|
self.TYPE_ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.block_store.delete_type(
|
||||||
sot = cls.conn.block_store.delete_type(cls.TYPE_ID,
|
self.TYPE_ID, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestType, self).tearDown()
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
sot = self.conn.block_store.get_type(self.TYPE_ID)
|
sot = self.conn.block_store.get_type(self.TYPE_ID)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.block_store.v2 import volume as _volume
|
from openstack.block_store.v2 import volume as _volume
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,29 +17,31 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestVolume(base.BaseFunctionalTest):
|
class TestVolume(base.BaseFunctionalTest):
|
||||||
|
|
||||||
VOLUME_NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
VOLUME_ID = None
|
super(TestVolume, self).setUp()
|
||||||
|
|
||||||
@classmethod
|
self.VOLUME_NAME = self.getUniqueString()
|
||||||
def setUpClass(cls):
|
self.VOLUME_ID = None
|
||||||
super(TestVolume, cls).setUpClass()
|
|
||||||
volume = cls.conn.block_store.create_volume(
|
volume = self.conn.block_store.create_volume(
|
||||||
name=cls.VOLUME_NAME,
|
name=self.VOLUME_NAME,
|
||||||
size=1)
|
size=1)
|
||||||
cls.conn.block_store.wait_for_status(volume,
|
self.conn.block_store.wait_for_status(
|
||||||
status='available',
|
volume,
|
||||||
failures=['error'],
|
status='available',
|
||||||
interval=2,
|
failures=['error'],
|
||||||
wait=120)
|
interval=2,
|
||||||
|
wait=120)
|
||||||
assert isinstance(volume, _volume.Volume)
|
assert isinstance(volume, _volume.Volume)
|
||||||
cls.assertIs(cls.VOLUME_NAME, volume.name)
|
self.assertEqual(self.VOLUME_NAME, volume.name)
|
||||||
cls.VOLUME_ID = volume.id
|
self.VOLUME_ID = volume.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.block_store.delete_volume(
|
||||||
sot = cls.conn.block_store.delete_volume(cls.VOLUME_ID,
|
self.VOLUME_ID,
|
||||||
ignore_missing=False)
|
ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
|
super(TestVolume, self).tearDown()
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
sot = self.conn.block_store.get_volume(self.VOLUME_ID)
|
sot = self.conn.block_store.get_volume(self.VOLUME_ID)
|
||||||
|
@@ -18,11 +18,10 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestFlavor(base.BaseFunctionalTest):
|
class TestFlavor(base.BaseFunctionalTest):
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestFlavor, self).setUp()
|
||||||
super(TestFlavor, cls).setUpClass()
|
|
||||||
|
|
||||||
cls.one_flavor = list(cls.conn.compute.flavors())[0]
|
self.one_flavor = list(self.conn.compute.flavors())[0]
|
||||||
|
|
||||||
def test_flavors(self):
|
def test_flavors(self):
|
||||||
flavors = list(self.conn.compute.flavors())
|
flavors = list(self.conn.compute.flavors())
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.compute.v2 import keypair
|
from openstack.compute.v2 import keypair
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,22 +17,23 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestKeypair(base.BaseFunctionalTest):
|
class TestKeypair(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
ID = None
|
super(TestKeypair, self).setUp()
|
||||||
|
|
||||||
@classmethod
|
# Keypairs can't have .'s in the name. Because why?
|
||||||
def setUpClass(cls):
|
self.NAME = self.getUniqueString().split('.')[-1]
|
||||||
super(TestKeypair, cls).setUpClass()
|
self.ID = None
|
||||||
sot = cls.conn.compute.create_keypair(name=cls.NAME)
|
|
||||||
|
sot = self.conn.compute.create_keypair(name=self.NAME)
|
||||||
assert isinstance(sot, keypair.Keypair)
|
assert isinstance(sot, keypair.Keypair)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls._keypair = sot
|
self._keypair = sot
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.compute.delete_keypair(self._keypair)
|
||||||
sot = cls.conn.compute.delete_keypair(cls._keypair)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestKeypair, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.compute.find_keypair(self.NAME)
|
sot = self.conn.compute.find_keypair(self.NAME)
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
import time
|
||||||
|
|
||||||
from openstack.compute.v2 import server
|
from openstack.compute.v2 import server
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -19,44 +19,41 @@ from openstack.tests.functional.network.v2 import test_network
|
|||||||
|
|
||||||
class TestServer(base.BaseFunctionalTest):
|
class TestServer(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
server = None
|
super(TestServer, self).setUp()
|
||||||
network = None
|
self.NAME = self.getUniqueString()
|
||||||
subnet = None
|
self.server = None
|
||||||
cidr = '10.99.99.0/16'
|
self.network = None
|
||||||
|
self.subnet = None
|
||||||
|
self.cidr = '10.99.99.0/16'
|
||||||
|
|
||||||
@classmethod
|
flavor = self.conn.compute.find_flavor(base.FLAVOR_NAME,
|
||||||
def setUpClass(cls):
|
ignore_missing=False)
|
||||||
super(TestServer, cls).setUpClass()
|
image = self.conn.compute.find_image(base.IMAGE_NAME,
|
||||||
flavor = cls.conn.compute.find_flavor(base.FLAVOR_NAME,
|
ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.network, self.subnet = test_network.create_network(
|
||||||
image = cls.conn.compute.find_image(base.IMAGE_NAME,
|
self.conn,
|
||||||
ignore_missing=False)
|
self.NAME,
|
||||||
cls.network, cls.subnet = test_network.create_network(cls.conn,
|
self.cidr)
|
||||||
cls.NAME,
|
self.assertIsNotNone(self.network)
|
||||||
cls.cidr)
|
|
||||||
if not cls.network:
|
|
||||||
# We can't call TestCase.fail from within the setUpClass
|
|
||||||
# classmethod, but we need to raise some exception in order
|
|
||||||
# to get this setup to fail and thusly fail the entire class.
|
|
||||||
raise Exception("Unable to create network for TestServer")
|
|
||||||
|
|
||||||
sot = cls.conn.compute.create_server(
|
sot = self.conn.compute.create_server(
|
||||||
name=cls.NAME, flavor_id=flavor.id, image_id=image.id,
|
name=self.NAME, flavor_id=flavor.id, image_id=image.id,
|
||||||
networks=[{"uuid": cls.network.id}])
|
networks=[{"uuid": self.network.id}])
|
||||||
cls.conn.compute.wait_for_server(sot)
|
self.conn.compute.wait_for_server(sot)
|
||||||
assert isinstance(sot, server.Server)
|
assert isinstance(sot, server.Server)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.server = sot
|
self.server = sot
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.compute.delete_server(self.server.id)
|
||||||
sot = cls.conn.compute.delete_server(cls.server.id)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
|
||||||
# Need to wait for the stack to go away before network delete
|
# Need to wait for the stack to go away before network delete
|
||||||
cls.conn.compute.wait_for_delete(cls.server)
|
self.conn.compute.wait_for_delete(self.server)
|
||||||
cls.linger_for_delete()
|
# TODO(shade) sleeping in tests is bad mmkay?
|
||||||
test_network.delete_network(cls.conn, cls.network, cls.subnet)
|
time.sleep(40)
|
||||||
|
test_network.delete_network(self.conn, self.network, self.subnet)
|
||||||
|
super(TestServer, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.compute.find_server(self.NAME)
|
sot = self.conn.compute.find_server(self.NAME)
|
||||||
|
@@ -22,23 +22,20 @@ class TestImage(base.BaseFunctionalTest):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.image_api_version = '2'
|
self.image_api_version = '2'
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestImage, self).setUp()
|
||||||
opts = cls.ImageOpts()
|
opts = self.ImageOpts()
|
||||||
cls.conn = connection.from_config(cloud_name=base.TEST_CLOUD,
|
self.conn = connection.from_config(
|
||||||
options=opts)
|
cloud_name=base.TEST_CLOUD, options=opts)
|
||||||
|
|
||||||
cls.img = cls.conn.image.upload_image(
|
self.img = self.conn.image.upload_image(
|
||||||
name=TEST_IMAGE_NAME,
|
name=TEST_IMAGE_NAME,
|
||||||
disk_format='raw',
|
disk_format='raw',
|
||||||
container_format='bare',
|
container_format='bare',
|
||||||
properties='{"description": "This is not an image"}',
|
properties='{"description": "This is not an image"}',
|
||||||
data=open('CONTRIBUTING.rst', 'r')
|
data=open('CONTRIBUTING.rst', 'r')
|
||||||
)
|
)
|
||||||
|
self.addCleanup(self.conn.image.delete_image, self.img)
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls):
|
|
||||||
cls.conn.image.delete_image(cls.img)
|
|
||||||
|
|
||||||
def test_get_image(self):
|
def test_get_image(self):
|
||||||
img2 = self.conn.image.get_image(self.img)
|
img2 = self.conn.image.get_image(self.img)
|
||||||
|
@@ -19,12 +19,7 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class BaseLBFunctionalTest(base.BaseFunctionalTest):
|
class BaseLBFunctionalTest(base.BaseFunctionalTest):
|
||||||
|
|
||||||
@classmethod
|
def lb_wait_for_status(self, lb, status, failures, interval=1, wait=120):
|
||||||
def setUpClass(cls):
|
|
||||||
super(BaseLBFunctionalTest, cls).setUpClass()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def lb_wait_for_status(cls, lb, status, failures, interval=1, wait=120):
|
|
||||||
"""Wait for load balancer to be in a particular provisioning status.
|
"""Wait for load balancer to be in a particular provisioning status.
|
||||||
|
|
||||||
:param lb: The load balancer to wait on to reach the status.
|
:param lb: The load balancer to wait on to reach the status.
|
||||||
@@ -49,7 +44,7 @@ class BaseLBFunctionalTest(base.BaseFunctionalTest):
|
|||||||
failures = []
|
failures = []
|
||||||
|
|
||||||
while total_sleep < wait:
|
while total_sleep < wait:
|
||||||
lb = cls.conn.load_balancer.get_load_balancer(lb.id)
|
lb = self.conn.load_balancer.get_load_balancer(lb.id)
|
||||||
if lb.provisioning_status == status:
|
if lb.provisioning_status == status:
|
||||||
return None
|
return None
|
||||||
if lb.provisioning_status in failures:
|
if lb.provisioning_status in failures:
|
||||||
|
@@ -10,9 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.load_balancer.v2 import health_monitor
|
from openstack.load_balancer.v2 import health_monitor
|
||||||
from openstack.load_balancer.v2 import l7_policy
|
from openstack.load_balancer.v2 import l7_policy
|
||||||
from openstack.load_balancer.v2 import l7_rule
|
from openstack.load_balancer.v2 import l7_rule
|
||||||
@@ -20,21 +17,11 @@ from openstack.load_balancer.v2 import listener
|
|||||||
from openstack.load_balancer.v2 import load_balancer
|
from openstack.load_balancer.v2 import load_balancer
|
||||||
from openstack.load_balancer.v2 import member
|
from openstack.load_balancer.v2 import member
|
||||||
from openstack.load_balancer.v2 import pool
|
from openstack.load_balancer.v2 import pool
|
||||||
from openstack.tests.functional import base
|
|
||||||
from openstack.tests.functional.load_balancer import base as lb_base
|
from openstack.tests.functional.load_balancer import base as lb_base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type='load-balancer'),
|
|
||||||
'Load-balancer service does not exist')
|
|
||||||
class TestLoadBalancer(lb_base.BaseLBFunctionalTest):
|
class TestLoadBalancer(lb_base.BaseLBFunctionalTest):
|
||||||
|
|
||||||
HM_NAME = uuid.uuid4().hex
|
|
||||||
L7POLICY_NAME = uuid.uuid4().hex
|
|
||||||
LB_NAME = uuid.uuid4().hex
|
|
||||||
LISTENER_NAME = uuid.uuid4().hex
|
|
||||||
MEMBER_NAME = uuid.uuid4().hex
|
|
||||||
POOL_NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
HM_ID = None
|
HM_ID = None
|
||||||
L7POLICY_ID = None
|
L7POLICY_ID = None
|
||||||
LB_ID = None
|
LB_ID = None
|
||||||
@@ -58,110 +45,121 @@ class TestLoadBalancer(lb_base.BaseLBFunctionalTest):
|
|||||||
L7RULE_TYPE = 'HOST_NAME'
|
L7RULE_TYPE = 'HOST_NAME'
|
||||||
L7RULE_VALUE = 'example'
|
L7RULE_VALUE = 'example'
|
||||||
|
|
||||||
# Note: Creating load balancers can be slow on some hosts due to nova
|
# TODO(shade): Creating load balancers can be slow on some hosts due to
|
||||||
# instance boot times (up to ten minutes) so we are consolidating
|
# nova instance boot times (up to ten minutes). This used to
|
||||||
# all of our functional tests here to reduce test runtime.
|
# use setUpClass, but that's a whole other pile of bad, so
|
||||||
@classmethod
|
# we may need to engineer something pleasing here.
|
||||||
def setUpClass(cls):
|
def setUp(self):
|
||||||
super(TestLoadBalancer, cls).setUpClass()
|
super(TestLoadBalancer, self).setUp()
|
||||||
subnets = list(cls.conn.network.subnets())
|
self.require_service('load-balancer')
|
||||||
cls.VIP_SUBNET_ID = subnets[0].id
|
|
||||||
cls.PROJECT_ID = cls.conn.session.get_project_id()
|
self.HM_NAME = self.getUniqueString()
|
||||||
test_lb = cls.conn.load_balancer.create_load_balancer(
|
self.L7POLICY_NAME = self.getUniqueString()
|
||||||
name=cls.LB_NAME, vip_subnet_id=cls.VIP_SUBNET_ID,
|
self.LB_NAME = self.getUniqueString()
|
||||||
project_id=cls.PROJECT_ID)
|
self.LISTENER_NAME = self.getUniqueString()
|
||||||
|
self.MEMBER_NAME = self.getUniqueString()
|
||||||
|
self.POOL_NAME = self.getUniqueString()
|
||||||
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
subnets = list(self.conn.network.subnets())
|
||||||
|
self.VIP_SUBNET_ID = subnets[0].id
|
||||||
|
self.PROJECT_ID = self.conn.session.get_project_id()
|
||||||
|
test_lb = self.conn.load_balancer.create_load_balancer(
|
||||||
|
name=self.LB_NAME, vip_subnet_id=self.VIP_SUBNET_ID,
|
||||||
|
project_id=self.PROJECT_ID)
|
||||||
assert isinstance(test_lb, load_balancer.LoadBalancer)
|
assert isinstance(test_lb, load_balancer.LoadBalancer)
|
||||||
cls.assertIs(cls.LB_NAME, test_lb.name)
|
self.assertEqual(self.LB_NAME, test_lb.name)
|
||||||
# Wait for the LB to go ACTIVE. On non-virtualization enabled hosts
|
# Wait for the LB to go ACTIVE. On non-virtualization enabled hosts
|
||||||
# it can take nova up to ten minutes to boot a VM.
|
# it can take nova up to ten minutes to boot a VM.
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'], interval=1, wait=600)
|
failures=['ERROR'], interval=1, wait=600)
|
||||||
cls.LB_ID = test_lb.id
|
self.LB_ID = test_lb.id
|
||||||
|
|
||||||
test_listener = cls.conn.load_balancer.create_listener(
|
test_listener = self.conn.load_balancer.create_listener(
|
||||||
name=cls.LISTENER_NAME, protocol=cls.PROTOCOL,
|
name=self.LISTENER_NAME, protocol=self.PROTOCOL,
|
||||||
protocol_port=cls.PROTOCOL_PORT, loadbalancer_id=cls.LB_ID)
|
protocol_port=self.PROTOCOL_PORT, loadbalancer_id=self.LB_ID)
|
||||||
assert isinstance(test_listener, listener.Listener)
|
assert isinstance(test_listener, listener.Listener)
|
||||||
cls.assertIs(cls.LISTENER_NAME, test_listener.name)
|
self.assertEqual(self.LISTENER_NAME, test_listener.name)
|
||||||
cls.LISTENER_ID = test_listener.id
|
self.LISTENER_ID = test_listener.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
test_pool = cls.conn.load_balancer.create_pool(
|
test_pool = self.conn.load_balancer.create_pool(
|
||||||
name=cls.POOL_NAME, protocol=cls.PROTOCOL,
|
name=self.POOL_NAME, protocol=self.PROTOCOL,
|
||||||
lb_algorithm=cls.LB_ALGORITHM, listener_id=cls.LISTENER_ID)
|
lb_algorithm=self.LB_ALGORITHM, listener_id=self.LISTENER_ID)
|
||||||
assert isinstance(test_pool, pool.Pool)
|
assert isinstance(test_pool, pool.Pool)
|
||||||
cls.assertIs(cls.POOL_NAME, test_pool.name)
|
self.assertEqual(self.POOL_NAME, test_pool.name)
|
||||||
cls.POOL_ID = test_pool.id
|
self.POOL_ID = test_pool.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
test_member = cls.conn.load_balancer.create_member(
|
test_member = self.conn.load_balancer.create_member(
|
||||||
pool=cls.POOL_ID, name=cls.MEMBER_NAME, address=cls.MEMBER_ADDRESS,
|
pool=self.POOL_ID, name=self.MEMBER_NAME,
|
||||||
protocol_port=cls.PROTOCOL_PORT, weight=cls.WEIGHT)
|
address=self.MEMBER_ADDRESS,
|
||||||
|
protocol_port=self.PROTOCOL_PORT, weight=self.WEIGHT)
|
||||||
assert isinstance(test_member, member.Member)
|
assert isinstance(test_member, member.Member)
|
||||||
cls.assertIs(cls.MEMBER_NAME, test_member.name)
|
self.assertEqual(self.MEMBER_NAME, test_member.name)
|
||||||
cls.MEMBER_ID = test_member.id
|
self.MEMBER_ID = test_member.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
test_hm = cls.conn.load_balancer.create_health_monitor(
|
test_hm = self.conn.load_balancer.create_health_monitor(
|
||||||
pool_id=cls.POOL_ID, name=cls.HM_NAME, delay=cls.DELAY,
|
pool_id=self.POOL_ID, name=self.HM_NAME, delay=self.DELAY,
|
||||||
timeout=cls.TIMEOUT, max_retries=cls.MAX_RETRY, type=cls.HM_TYPE)
|
timeout=self.TIMEOUT, max_retries=self.MAX_RETRY,
|
||||||
|
type=self.HM_TYPE)
|
||||||
assert isinstance(test_hm, health_monitor.HealthMonitor)
|
assert isinstance(test_hm, health_monitor.HealthMonitor)
|
||||||
cls.assertIs(cls.HM_NAME, test_hm.name)
|
self.assertEqual(self.HM_NAME, test_hm.name)
|
||||||
cls.HM_ID = test_hm.id
|
self.HM_ID = test_hm.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
test_l7policy = cls.conn.load_balancer.create_l7_policy(
|
test_l7policy = self.conn.load_balancer.create_l7_policy(
|
||||||
listener_id=cls.LISTENER_ID, name=cls.L7POLICY_NAME,
|
listener_id=self.LISTENER_ID, name=self.L7POLICY_NAME,
|
||||||
action=cls.ACTION, redirect_url=cls.REDIRECT_URL)
|
action=self.ACTION, redirect_url=self.REDIRECT_URL)
|
||||||
assert isinstance(test_l7policy, l7_policy.L7Policy)
|
assert isinstance(test_l7policy, l7_policy.L7Policy)
|
||||||
cls.assertIs(cls.L7POLICY_NAME, test_l7policy.name)
|
self.assertEqual(self.L7POLICY_NAME, test_l7policy.name)
|
||||||
cls.L7POLICY_ID = test_l7policy.id
|
self.L7POLICY_ID = test_l7policy.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
test_l7rule = cls.conn.load_balancer.create_l7_rule(
|
test_l7rule = self.conn.load_balancer.create_l7_rule(
|
||||||
l7_policy=cls.L7POLICY_ID, compare_type=cls.COMPARE_TYPE,
|
l7_policy=self.L7POLICY_ID, compare_type=self.COMPARE_TYPE,
|
||||||
type=cls.L7RULE_TYPE, value=cls.L7RULE_VALUE)
|
type=self.L7RULE_TYPE, value=self.L7RULE_VALUE)
|
||||||
assert isinstance(test_l7rule, l7_rule.L7Rule)
|
assert isinstance(test_l7rule, l7_rule.L7Rule)
|
||||||
cls.assertIs(cls.COMPARE_TYPE, test_l7rule.compare_type)
|
self.assertEqual(self.COMPARE_TYPE, test_l7rule.compare_type)
|
||||||
cls.L7RULE_ID = test_l7rule.id
|
self.L7RULE_ID = test_l7rule.id
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE',
|
self.lb_wait_for_status(test_lb, status='ACTIVE',
|
||||||
failures=['ERROR'])
|
failures=['ERROR'])
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
test_lb = self.conn.load_balancer.get_load_balancer(self.LB_ID)
|
||||||
test_lb = cls.conn.load_balancer.get_load_balancer(cls.LB_ID)
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_l7_rule(
|
self.conn.load_balancer.delete_l7_rule(
|
||||||
cls.L7RULE_ID, l7_policy=cls.L7POLICY_ID, ignore_missing=False)
|
self.L7RULE_ID, l7_policy=self.L7POLICY_ID, ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_l7_policy(
|
self.conn.load_balancer.delete_l7_policy(
|
||||||
cls.L7POLICY_ID, ignore_missing=False)
|
self.L7POLICY_ID, ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_health_monitor(
|
self.conn.load_balancer.delete_health_monitor(
|
||||||
cls.HM_ID, ignore_missing=False)
|
self.HM_ID, ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_member(
|
self.conn.load_balancer.delete_member(
|
||||||
cls.MEMBER_ID, cls.POOL_ID, ignore_missing=False)
|
self.MEMBER_ID, self.POOL_ID, ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_pool(cls.POOL_ID, ignore_missing=False)
|
self.conn.load_balancer.delete_pool(self.POOL_ID, ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_listener(cls.LISTENER_ID,
|
self.conn.load_balancer.delete_listener(self.LISTENER_ID,
|
||||||
ignore_missing=False)
|
ignore_missing=False)
|
||||||
cls.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
self.lb_wait_for_status(test_lb, status='ACTIVE', failures=['ERROR'])
|
||||||
|
|
||||||
cls.conn.load_balancer.delete_load_balancer(
|
self.conn.load_balancer.delete_load_balancer(
|
||||||
cls.LB_ID, ignore_missing=False)
|
self.LB_ID, ignore_missing=False)
|
||||||
|
super(TestLoadBalancer, self).tearDown()
|
||||||
|
|
||||||
def test_lb_find(self):
|
def test_lb_find(self):
|
||||||
test_lb = self.conn.load_balancer.find_load_balancer(self.LB_NAME)
|
test_lb = self.conn.load_balancer.find_load_balancer(self.LB_NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import address_scope as _address_scope
|
from openstack.network.v2 import address_scope as _address_scope
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -19,27 +18,26 @@ from openstack.tests.functional import base
|
|||||||
class TestAddressScope(base.BaseFunctionalTest):
|
class TestAddressScope(base.BaseFunctionalTest):
|
||||||
|
|
||||||
ADDRESS_SCOPE_ID = None
|
ADDRESS_SCOPE_ID = None
|
||||||
ADDRESS_SCOPE_NAME = uuid.uuid4().hex
|
|
||||||
ADDRESS_SCOPE_NAME_UPDATED = uuid.uuid4().hex
|
|
||||||
IS_SHARED = False
|
IS_SHARED = False
|
||||||
IP_VERSION = 4
|
IP_VERSION = 4
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAddressScope, self).setUp()
|
||||||
super(TestAddressScope, cls).setUpClass()
|
self.ADDRESS_SCOPE_NAME = self.getUniqueString()
|
||||||
address_scope = cls.conn.network.create_address_scope(
|
self.ADDRESS_SCOPE_NAME_UPDATED = self.getUniqueString()
|
||||||
ip_version=cls.IP_VERSION,
|
address_scope = self.conn.network.create_address_scope(
|
||||||
name=cls.ADDRESS_SCOPE_NAME,
|
ip_version=self.IP_VERSION,
|
||||||
shared=cls.IS_SHARED,
|
name=self.ADDRESS_SCOPE_NAME,
|
||||||
|
shared=self.IS_SHARED,
|
||||||
)
|
)
|
||||||
assert isinstance(address_scope, _address_scope.AddressScope)
|
assert isinstance(address_scope, _address_scope.AddressScope)
|
||||||
cls.assertIs(cls.ADDRESS_SCOPE_NAME, address_scope.name)
|
self.assertEqual(self.ADDRESS_SCOPE_NAME, address_scope.name)
|
||||||
cls.ADDRESS_SCOPE_ID = address_scope.id
|
self.ADDRESS_SCOPE_ID = address_scope.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_address_scope(self.ADDRESS_SCOPE_ID)
|
||||||
sot = cls.conn.network.delete_address_scope(cls.ADDRESS_SCOPE_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestAddressScope, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_address_scope(self.ADDRESS_SCOPE_NAME)
|
sot = self.conn.network.find_address_scope(self.ADDRESS_SCOPE_NAME)
|
||||||
|
@@ -28,12 +28,11 @@ class TestAgent(base.BaseFunctionalTest):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAgent, self).setUp()
|
||||||
super(TestAgent, cls).setUpClass()
|
agent_list = list(self.conn.network.agents())
|
||||||
agent_list = list(cls.conn.network.agents())
|
self.AGENT = agent_list[0]
|
||||||
cls.AGENT = agent_list[0]
|
assert isinstance(self.AGENT, agent.Agent)
|
||||||
assert isinstance(cls.AGENT, agent.Agent)
|
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
agent_list = list(self.conn.network.agents())
|
agent_list = list(self.conn.network.agents())
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,34 +17,29 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestAgentNetworks(base.BaseFunctionalTest):
|
class TestAgentNetworks(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NETWORK_NAME = 'network-' + uuid.uuid4().hex
|
|
||||||
NETWORK_ID = None
|
NETWORK_ID = None
|
||||||
AGENT = None
|
AGENT = None
|
||||||
AGENT_ID = None
|
AGENT_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAgentNetworks, self).setUp()
|
||||||
super(TestAgentNetworks, cls).setUpClass()
|
|
||||||
|
|
||||||
net = cls.conn.network.create_network(name=cls.NETWORK_NAME)
|
self.NETWORK_NAME = self.getUniqueString('network')
|
||||||
|
net = self.conn.network.create_network(name=self.NETWORK_NAME)
|
||||||
|
self.addCleanup(self.conn.network.delete_network, net.id)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.NETWORK_ID = net.id
|
self.NETWORK_ID = net.id
|
||||||
agent_list = list(cls.conn.network.agents())
|
agent_list = list(self.conn.network.agents())
|
||||||
agents = [agent for agent in agent_list
|
agents = [agent for agent in agent_list
|
||||||
if agent.agent_type == 'DHCP agent']
|
if agent.agent_type == 'DHCP agent']
|
||||||
cls.AGENT = agents[0]
|
self.AGENT = agents[0]
|
||||||
cls.AGENT_ID = cls.AGENT.id
|
self.AGENT_ID = self.AGENT.id
|
||||||
|
|
||||||
@classmethod
|
def test_add_remove_agent(self):
|
||||||
def tearDownClass(cls):
|
|
||||||
cls.conn.network.delete_network(cls.NETWORK_ID)
|
|
||||||
|
|
||||||
def test_add_agent_to_network(self):
|
|
||||||
net = self.AGENT.add_agent_to_network(self.conn.session,
|
net = self.AGENT.add_agent_to_network(self.conn.session,
|
||||||
network_id=self.NETWORK_ID)
|
network_id=self.NETWORK_ID)
|
||||||
self._verify_add(net)
|
self._verify_add(net)
|
||||||
|
|
||||||
def test_remove_agent_from_network(self):
|
|
||||||
net = self.AGENT.remove_agent_from_network(self.conn.session,
|
net = self.AGENT.remove_agent_from_network(self.conn.session,
|
||||||
network_id=self.NETWORK_ID)
|
network_id=self.NETWORK_ID)
|
||||||
self._verify_remove(net)
|
self._verify_remove(net)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import router
|
from openstack.network.v2 import router
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,24 +17,20 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestAgentRouters(base.BaseFunctionalTest):
|
class TestAgentRouters(base.BaseFunctionalTest):
|
||||||
|
|
||||||
ROUTER_NAME = 'router-name-' + uuid.uuid4().hex
|
|
||||||
ROUTER = None
|
ROUTER = None
|
||||||
AGENT = None
|
AGENT = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAgentRouters, self).setUp()
|
||||||
super(TestAgentRouters, cls).setUpClass()
|
|
||||||
|
|
||||||
cls.ROUTER = cls.conn.network.create_router(name=cls.ROUTER_NAME)
|
self.ROUTER_NAME = 'router-name-' + self.getUniqueString('router-name')
|
||||||
assert isinstance(cls.ROUTER, router.Router)
|
self.ROUTER = self.conn.network.create_router(name=self.ROUTER_NAME)
|
||||||
agent_list = list(cls.conn.network.agents())
|
self.addCleanup(self.conn.network.delete_router, self.ROUTER)
|
||||||
|
assert isinstance(self.ROUTER, router.Router)
|
||||||
|
agent_list = list(self.conn.network.agents())
|
||||||
agents = [agent for agent in agent_list
|
agents = [agent for agent in agent_list
|
||||||
if agent.agent_type == 'L3 agent']
|
if agent.agent_type == 'L3 agent']
|
||||||
cls.AGENT = agents[0]
|
self.AGENT = agents[0]
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls):
|
|
||||||
cls.conn.network.delete_router(cls.ROUTER)
|
|
||||||
|
|
||||||
def test_add_router_to_agent(self):
|
def test_add_router_to_agent(self):
|
||||||
self.conn.network.add_router_to_agent(self.AGENT, self.ROUTER)
|
self.conn.network.add_router_to_agent(self.AGENT, self.ROUTER)
|
||||||
|
@@ -19,16 +19,15 @@ class TestAutoAllocatedTopology(base.BaseFunctionalTest):
|
|||||||
NETWORK_ID = None
|
NETWORK_ID = None
|
||||||
PROJECT_ID = None
|
PROJECT_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAutoAllocatedTopology, self).setUp()
|
||||||
super(TestAutoAllocatedTopology, cls).setUpClass()
|
projects = [o.project_id for o in self.conn.network.networks()]
|
||||||
projects = [o.project_id for o in cls.conn.network.networks()]
|
self.PROJECT_ID = projects[0]
|
||||||
cls.PROJECT_ID = projects[0]
|
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
res = self.conn.network.delete_auto_allocated_topology(self.PROJECT_ID)
|
||||||
res = cls.conn.network.delete_auto_allocated_topology(cls.PROJECT_ID)
|
self.assertIsNone(res)
|
||||||
cls.assertIs(None, res)
|
super(TestAutoAllocatedTopology, self).tearDown()
|
||||||
|
|
||||||
def test_dry_run_option_pass(self):
|
def test_dry_run_option_pass(self):
|
||||||
# Dry run will only pass if there is a public network
|
# Dry run will only pass if there is a public network
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import router
|
from openstack.network.v2 import router
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,22 +17,21 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestDVRRouter(base.BaseFunctionalTest):
|
class TestDVRRouter(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestDVRRouter, self).setUp()
|
||||||
super(TestDVRRouter, cls).setUpClass()
|
self.NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_router(name=cls.NAME, distributed=True)
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
sot = self.conn.network.create_router(name=self.NAME, distributed=True)
|
||||||
assert isinstance(sot, router.Router)
|
assert isinstance(sot, router.Router)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_router(self.ID, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_router(cls.ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestDVRRouter, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_router(self.NAME)
|
sot = self.conn.network.find_router(self.NAME)
|
||||||
|
@@ -10,15 +10,12 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import flavor
|
from openstack.network.v2 import flavor
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
class TestFlavor(base.BaseFunctionalTest):
|
class TestFlavor(base.BaseFunctionalTest):
|
||||||
|
|
||||||
FLAVOR_NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = "UPDATED-NAME"
|
UPDATE_NAME = "UPDATED-NAME"
|
||||||
SERVICE_TYPE = "FLAVORS"
|
SERVICE_TYPE = "FLAVORS"
|
||||||
ID = None
|
ID = None
|
||||||
@@ -26,29 +23,30 @@ class TestFlavor(base.BaseFunctionalTest):
|
|||||||
SERVICE_PROFILE_DESCRIPTION = "DESCRIPTION"
|
SERVICE_PROFILE_DESCRIPTION = "DESCRIPTION"
|
||||||
METAINFO = "FlAVOR_PROFILE_METAINFO"
|
METAINFO = "FlAVOR_PROFILE_METAINFO"
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestFlavor, self).setUp()
|
||||||
super(TestFlavor, cls).setUpClass()
|
self.FLAVOR_NAME = self.getUniqueString('flavor')
|
||||||
flavors = cls.conn.network.create_flavor(name=cls.FLAVOR_NAME,
|
flavors = self.conn.network.create_flavor(
|
||||||
service_type=cls.SERVICE_TYPE)
|
name=self.FLAVOR_NAME,
|
||||||
|
service_type=self.SERVICE_TYPE)
|
||||||
assert isinstance(flavors, flavor.Flavor)
|
assert isinstance(flavors, flavor.Flavor)
|
||||||
cls.assertIs(cls.FLAVOR_NAME, flavors.name)
|
self.assertEqual(self.FLAVOR_NAME, flavors.name)
|
||||||
cls.assertIs(cls.SERVICE_TYPE, flavors.service_type)
|
self.assertEqual(self.SERVICE_TYPE, flavors.service_type)
|
||||||
|
|
||||||
cls.ID = flavors.id
|
self.ID = flavors.id
|
||||||
|
|
||||||
cls.service_profiles = cls.conn.network.create_service_profile(
|
self.service_profiles = self.conn.network.create_service_profile(
|
||||||
description=cls.SERVICE_PROFILE_DESCRIPTION,
|
description=self.SERVICE_PROFILE_DESCRIPTION,
|
||||||
metainfo=cls.METAINFO,)
|
metainfo=self.METAINFO,)
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
flavors = self.conn.network.delete_flavor(self.ID, ignore_missing=True)
|
||||||
flavors = cls.conn.network.delete_flavor(cls.ID, ignore_missing=True)
|
self.assertIsNone(flavors)
|
||||||
cls.assertIs(None, flavors)
|
|
||||||
|
|
||||||
service_profiles = cls.conn.network.delete_service_profile(
|
service_profiles = self.conn.network.delete_service_profile(
|
||||||
cls.ID, ignore_missing=True)
|
self.ID, ignore_missing=True)
|
||||||
cls.assertIs(None, service_profiles)
|
self.assertIsNone(service_profiles)
|
||||||
|
super(TestFlavor, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
flavors = self.conn.network.find_flavor(self.FLAVOR_NAME)
|
flavors = self.conn.network.find_flavor(self.FLAVOR_NAME)
|
||||||
@@ -68,13 +66,12 @@ class TestFlavor(base.BaseFunctionalTest):
|
|||||||
name=self.UPDATE_NAME)
|
name=self.UPDATE_NAME)
|
||||||
self.assertEqual(self.UPDATE_NAME, flavor.name)
|
self.assertEqual(self.UPDATE_NAME, flavor.name)
|
||||||
|
|
||||||
def test_associate_flavor_with_service_profile(self):
|
def test_associate_disassociate_flavor_with_service_profile(self):
|
||||||
response = \
|
response = \
|
||||||
self.conn.network.associate_flavor_with_service_profile(
|
self.conn.network.associate_flavor_with_service_profile(
|
||||||
self.ID, self.service_profiles.id)
|
self.ID, self.service_profiles.id)
|
||||||
self.assertIsNotNone(response)
|
self.assertIsNotNone(response)
|
||||||
|
|
||||||
def test_disassociate_flavor_from_service_profile(self):
|
|
||||||
response = \
|
response = \
|
||||||
self.conn.network.disassociate_flavor_from_service_profile(
|
self.conn.network.disassociate_flavor_from_service_profile(
|
||||||
self.ID, self.service_profiles.id)
|
self.ID, self.service_profiles.id)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import floating_ip
|
from openstack.network.v2 import floating_ip
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
@@ -22,11 +21,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestFloatingIP(base.BaseFunctionalTest):
|
class TestFloatingIP(base.BaseFunctionalTest):
|
||||||
|
|
||||||
ROT_NAME = uuid.uuid4().hex
|
|
||||||
EXT_NET_NAME = uuid.uuid4().hex
|
|
||||||
EXT_SUB_NAME = uuid.uuid4().hex
|
|
||||||
INT_NET_NAME = uuid.uuid4().hex
|
|
||||||
INT_SUB_NAME = uuid.uuid4().hex
|
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
EXT_CIDR = "10.100.0.0/24"
|
EXT_CIDR = "10.100.0.0/24"
|
||||||
INT_CIDR = "10.101.0.0/24"
|
INT_CIDR = "10.101.0.0/24"
|
||||||
@@ -38,84 +32,89 @@ class TestFloatingIP(base.BaseFunctionalTest):
|
|||||||
PORT_ID = None
|
PORT_ID = None
|
||||||
FIP = None
|
FIP = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestFloatingIP, self).setUp()
|
||||||
super(TestFloatingIP, cls).setUpClass()
|
self.ROT_NAME = self.getUniqueString()
|
||||||
|
self.EXT_NET_NAME = self.getUniqueString()
|
||||||
|
self.EXT_SUB_NAME = self.getUniqueString()
|
||||||
|
self.INT_NET_NAME = self.getUniqueString()
|
||||||
|
self.INT_SUB_NAME = self.getUniqueString()
|
||||||
# Create Exeternal Network
|
# Create Exeternal Network
|
||||||
args = {'router:external': True}
|
args = {'router:external': True}
|
||||||
net = cls._create_network(cls.EXT_NET_NAME, **args)
|
net = self._create_network(self.EXT_NET_NAME, **args)
|
||||||
cls.EXT_NET_ID = net.id
|
self.EXT_NET_ID = net.id
|
||||||
sub = cls._create_subnet(cls.EXT_SUB_NAME, cls.EXT_NET_ID,
|
sub = self._create_subnet(
|
||||||
cls.EXT_CIDR)
|
self.EXT_SUB_NAME, self.EXT_NET_ID, self.EXT_CIDR)
|
||||||
cls.EXT_SUB_ID = sub.id
|
self.EXT_SUB_ID = sub.id
|
||||||
# Create Internal Network
|
# Create Internal Network
|
||||||
net = cls._create_network(cls.INT_NET_NAME)
|
net = self._create_network(self.INT_NET_NAME)
|
||||||
cls.INT_NET_ID = net.id
|
self.INT_NET_ID = net.id
|
||||||
sub = cls._create_subnet(cls.INT_SUB_NAME, cls.INT_NET_ID,
|
sub = self._create_subnet(
|
||||||
cls.INT_CIDR)
|
self.INT_SUB_NAME, self.INT_NET_ID, self.INT_CIDR)
|
||||||
cls.INT_SUB_ID = sub.id
|
self.INT_SUB_ID = sub.id
|
||||||
# Create Router
|
# Create Router
|
||||||
args = {'external_gateway_info': {'network_id': cls.EXT_NET_ID}}
|
args = {'external_gateway_info': {'network_id': self.EXT_NET_ID}}
|
||||||
sot = cls.conn.network.create_router(name=cls.ROT_NAME, **args)
|
sot = self.conn.network.create_router(name=self.ROT_NAME, **args)
|
||||||
assert isinstance(sot, router.Router)
|
assert isinstance(sot, router.Router)
|
||||||
cls.assertIs(cls.ROT_NAME, sot.name)
|
self.assertEqual(self.ROT_NAME, sot.name)
|
||||||
cls.ROT_ID = sot.id
|
self.ROT_ID = sot.id
|
||||||
cls.ROT = sot
|
self.ROT = sot
|
||||||
# Add Router's Interface to Internal Network
|
# Add Router's Interface to Internal Network
|
||||||
sot = cls.ROT.add_interface(cls.conn.session, subnet_id=cls.INT_SUB_ID)
|
sot = self.ROT.add_interface(
|
||||||
cls.assertIs(sot['subnet_id'], cls.INT_SUB_ID)
|
self.conn.session, subnet_id=self.INT_SUB_ID)
|
||||||
|
self.assertEqual(sot['subnet_id'], self.INT_SUB_ID)
|
||||||
# Create Port in Internal Network
|
# Create Port in Internal Network
|
||||||
prt = cls.conn.network.create_port(network_id=cls.INT_NET_ID)
|
prt = self.conn.network.create_port(network_id=self.INT_NET_ID)
|
||||||
assert isinstance(prt, port.Port)
|
assert isinstance(prt, port.Port)
|
||||||
cls.PORT_ID = prt.id
|
self.PORT_ID = prt.id
|
||||||
# Create Floating IP.
|
# Create Floating IP.
|
||||||
fip = cls.conn.network.create_ip(floating_network_id=cls.EXT_NET_ID)
|
fip = self.conn.network.create_ip(floating_network_id=self.EXT_NET_ID)
|
||||||
assert isinstance(fip, floating_ip.FloatingIP)
|
assert isinstance(fip, floating_ip.FloatingIP)
|
||||||
cls.FIP = fip
|
self.FIP = fip
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_ip(self.FIP.id, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_ip(cls.FIP.id, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_port(self.PORT_ID, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_port(cls.PORT_ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.ROT.remove_interface(
|
||||||
sot = cls.ROT.remove_interface(cls.conn.session,
|
self.conn.session, subnet_id=self.INT_SUB_ID)
|
||||||
subnet_id=cls.INT_SUB_ID)
|
self.assertEqual(sot['subnet_id'], self.INT_SUB_ID)
|
||||||
cls.assertIs(sot['subnet_id'], cls.INT_SUB_ID)
|
sot = self.conn.network.delete_router(
|
||||||
sot = cls.conn.network.delete_router(cls.ROT_ID, ignore_missing=False)
|
self.ROT_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_subnet(cls.EXT_SUB_ID,
|
sot = self.conn.network.delete_subnet(
|
||||||
ignore_missing=False)
|
self.EXT_SUB_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_network(cls.EXT_NET_ID,
|
sot = self.conn.network.delete_network(
|
||||||
ignore_missing=False)
|
self.EXT_NET_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_subnet(cls.INT_SUB_ID,
|
sot = self.conn.network.delete_subnet(
|
||||||
ignore_missing=False)
|
self.INT_SUB_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_network(cls.INT_NET_ID,
|
sot = self.conn.network.delete_network(
|
||||||
ignore_missing=False)
|
self.INT_NET_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
|
super(TestFloatingIP, self).tearDown()
|
||||||
|
|
||||||
@classmethod
|
def _create_network(self, name, **args):
|
||||||
def _create_network(cls, name, **args):
|
self.name = name
|
||||||
cls.name = name
|
net = self.conn.network.create_network(name=name, **args)
|
||||||
net = cls.conn.network.create_network(name=name, **args)
|
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.name, net.name)
|
self.assertEqual(self.name, net.name)
|
||||||
return net
|
return net
|
||||||
|
|
||||||
@classmethod
|
def _create_subnet(self, name, net_id, cidr):
|
||||||
def _create_subnet(cls, name, net_id, cidr):
|
self.name = name
|
||||||
cls.name = name
|
self.net_id = net_id
|
||||||
cls.net_id = net_id
|
self.cidr = cidr
|
||||||
cls.cidr = cidr
|
sub = self.conn.network.create_subnet(
|
||||||
sub = cls.conn.network.create_subnet(name=cls.name,
|
name=self.name,
|
||||||
ip_version=cls.IPV4,
|
ip_version=self.IPV4,
|
||||||
network_id=cls.net_id,
|
network_id=self.net_id,
|
||||||
cidr=cls.cidr)
|
cidr=self.cidr)
|
||||||
assert isinstance(sub, subnet.Subnet)
|
assert isinstance(sub, subnet.Subnet)
|
||||||
cls.assertIs(cls.name, sub.name)
|
self.assertEqual(self.name, sub.name)
|
||||||
return sub
|
return sub
|
||||||
|
|
||||||
def test_find_by_id(self):
|
def test_find_by_id(self):
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -40,21 +39,20 @@ def delete_network(conn, network, subnet):
|
|||||||
|
|
||||||
class TestNetwork(base.BaseFunctionalTest):
|
class TestNetwork(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestNetwork, self).setUp()
|
||||||
super(TestNetwork, cls).setUpClass()
|
self.NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_network(name=cls.NAME)
|
sot = self.conn.network.create_network(name=self.NAME)
|
||||||
assert isinstance(sot, network.Network)
|
assert isinstance(sot, network.Network)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_network(self.ID, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_network(cls.ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestNetwork, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_network(self.NAME)
|
sot = self.conn.network.find_network(self.NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import port
|
from openstack.network.v2 import port
|
||||||
@@ -20,44 +19,45 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestNetworkIPAvailability(base.BaseFunctionalTest):
|
class TestNetworkIPAvailability(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NET_NAME = uuid.uuid4().hex
|
|
||||||
SUB_NAME = uuid.uuid4().hex
|
|
||||||
PORT_NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
CIDR = "10.100.0.0/24"
|
CIDR = "10.100.0.0/24"
|
||||||
NET_ID = None
|
NET_ID = None
|
||||||
SUB_ID = None
|
SUB_ID = None
|
||||||
PORT_ID = None
|
PORT_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestNetworkIPAvailability, self).setUp()
|
||||||
super(TestNetworkIPAvailability, cls).setUpClass()
|
self.NET_NAME = self.getUniqueString()
|
||||||
net = cls.conn.network.create_network(name=cls.NET_NAME)
|
self.SUB_NAME = self.getUniqueString()
|
||||||
|
self.PORT_NAME = self.getUniqueString()
|
||||||
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
net = self.conn.network.create_network(name=self.NET_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.NET_NAME, net.name)
|
self.assertEqual(self.NET_NAME, net.name)
|
||||||
cls.NET_ID = net.id
|
self.NET_ID = net.id
|
||||||
sub = cls.conn.network.create_subnet(name=cls.SUB_NAME,
|
sub = self.conn.network.create_subnet(
|
||||||
ip_version=cls.IPV4,
|
name=self.SUB_NAME,
|
||||||
network_id=cls.NET_ID,
|
ip_version=self.IPV4,
|
||||||
cidr=cls.CIDR)
|
network_id=self.NET_ID,
|
||||||
|
cidr=self.CIDR)
|
||||||
assert isinstance(sub, subnet.Subnet)
|
assert isinstance(sub, subnet.Subnet)
|
||||||
cls.assertIs(cls.SUB_NAME, sub.name)
|
self.assertEqual(self.SUB_NAME, sub.name)
|
||||||
cls.SUB_ID = sub.id
|
self.SUB_ID = sub.id
|
||||||
prt = cls.conn.network.create_port(name=cls.PORT_NAME,
|
prt = self.conn.network.create_port(
|
||||||
network_id=cls.NET_ID)
|
name=self.PORT_NAME,
|
||||||
|
network_id=self.NET_ID)
|
||||||
assert isinstance(prt, port.Port)
|
assert isinstance(prt, port.Port)
|
||||||
cls.assertIs(cls.PORT_NAME, prt.name)
|
self.assertEqual(self.PORT_NAME, prt.name)
|
||||||
cls.PORT_ID = prt.id
|
self.PORT_ID = prt.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_port(self.PORT_ID)
|
||||||
sot = cls.conn.network.delete_port(cls.PORT_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_subnet(self.SUB_ID)
|
||||||
sot = cls.conn.network.delete_subnet(cls.SUB_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_network(self.NET_ID)
|
||||||
sot = cls.conn.network.delete_network(cls.NET_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestNetworkIPAvailability, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_network_ip_availability(self.NET_ID)
|
sot = self.conn.network.find_network_ip_availability(self.NET_ID)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import port
|
from openstack.network.v2 import port
|
||||||
@@ -20,44 +19,48 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestPort(base.BaseFunctionalTest):
|
class TestPort(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NET_NAME = uuid.uuid4().hex
|
|
||||||
SUB_NAME = uuid.uuid4().hex
|
|
||||||
PORT_NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
CIDR = "10.100.0.0/24"
|
CIDR = "10.100.0.0/24"
|
||||||
NET_ID = None
|
NET_ID = None
|
||||||
SUB_ID = None
|
SUB_ID = None
|
||||||
PORT_ID = None
|
PORT_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestPort, self).setUp()
|
||||||
super(TestPort, cls).setUpClass()
|
self.NET_NAME = self.getUniqueString()
|
||||||
net = cls.conn.network.create_network(name=cls.NET_NAME)
|
self.SUB_NAME = self.getUniqueString()
|
||||||
|
self.PORT_NAME = self.getUniqueString()
|
||||||
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
net = self.conn.network.create_network(name=self.NET_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.NET_NAME, net.name)
|
self.assertEqual(self.NET_NAME, net.name)
|
||||||
cls.NET_ID = net.id
|
self.NET_ID = net.id
|
||||||
sub = cls.conn.network.create_subnet(name=cls.SUB_NAME,
|
sub = self.conn.network.create_subnet(
|
||||||
ip_version=cls.IPV4,
|
name=self.SUB_NAME,
|
||||||
network_id=cls.NET_ID,
|
ip_version=self.IPV4,
|
||||||
cidr=cls.CIDR)
|
network_id=self.NET_ID,
|
||||||
|
cidr=self.CIDR)
|
||||||
assert isinstance(sub, subnet.Subnet)
|
assert isinstance(sub, subnet.Subnet)
|
||||||
cls.assertIs(cls.SUB_NAME, sub.name)
|
self.assertEqual(self.SUB_NAME, sub.name)
|
||||||
cls.SUB_ID = sub.id
|
self.SUB_ID = sub.id
|
||||||
prt = cls.conn.network.create_port(name=cls.PORT_NAME,
|
prt = self.conn.network.create_port(
|
||||||
network_id=cls.NET_ID)
|
name=self.PORT_NAME,
|
||||||
|
network_id=self.NET_ID)
|
||||||
assert isinstance(prt, port.Port)
|
assert isinstance(prt, port.Port)
|
||||||
cls.assertIs(cls.PORT_NAME, prt.name)
|
self.assertEqual(self.PORT_NAME, prt.name)
|
||||||
cls.PORT_ID = prt.id
|
self.PORT_ID = prt.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_port(
|
||||||
sot = cls.conn.network.delete_port(cls.PORT_ID, ignore_missing=False)
|
self.PORT_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_subnet(cls.SUB_ID, ignore_missing=False)
|
sot = self.conn.network.delete_subnet(
|
||||||
cls.assertIs(None, sot)
|
self.SUB_ID, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_network(cls.NET_ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_network(
|
||||||
|
self.NET_ID, ignore_missing=False)
|
||||||
|
self.assertIsNone(sot)
|
||||||
|
super(TestPort, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_port(self.PORT_NAME)
|
sot = self.conn.network.find_port(self.PORT_NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import (qos_bandwidth_limit_rule as
|
from openstack.network.v2 import (qos_bandwidth_limit_rule as
|
||||||
_qos_bandwidth_limit_rule)
|
_qos_bandwidth_limit_rule)
|
||||||
@@ -20,10 +19,8 @@ from openstack.tests.functional import base
|
|||||||
class TestQoSBandwidthLimitRule(base.BaseFunctionalTest):
|
class TestQoSBandwidthLimitRule(base.BaseFunctionalTest):
|
||||||
|
|
||||||
QOS_POLICY_ID = None
|
QOS_POLICY_ID = None
|
||||||
QOS_POLICY_NAME = uuid.uuid4().hex
|
|
||||||
QOS_IS_SHARED = False
|
QOS_IS_SHARED = False
|
||||||
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
||||||
RULE_ID = uuid.uuid4().hex
|
|
||||||
RULE_MAX_KBPS = 1500
|
RULE_MAX_KBPS = 1500
|
||||||
RULE_MAX_KBPS_NEW = 1800
|
RULE_MAX_KBPS_NEW = 1800
|
||||||
RULE_MAX_BURST_KBPS = 1100
|
RULE_MAX_BURST_KBPS = 1100
|
||||||
@@ -31,35 +28,36 @@ class TestQoSBandwidthLimitRule(base.BaseFunctionalTest):
|
|||||||
RULE_DIRECTION = 'egress'
|
RULE_DIRECTION = 'egress'
|
||||||
RULE_DIRECTION_NEW = 'ingress'
|
RULE_DIRECTION_NEW = 'ingress'
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestQoSBandwidthLimitRule, self).setUp()
|
||||||
super(TestQoSBandwidthLimitRule, cls).setUpClass()
|
self.QOS_POLICY_NAME = self.getUniqueString()
|
||||||
qos_policy = cls.conn.network.create_qos_policy(
|
self.RULE_ID = self.getUniqueString()
|
||||||
description=cls.QOS_POLICY_DESCRIPTION,
|
qos_policy = self.conn.network.create_qos_policy(
|
||||||
name=cls.QOS_POLICY_NAME,
|
description=self.QOS_POLICY_DESCRIPTION,
|
||||||
shared=cls.QOS_IS_SHARED,
|
name=self.QOS_POLICY_NAME,
|
||||||
|
shared=self.QOS_IS_SHARED,
|
||||||
)
|
)
|
||||||
cls.QOS_POLICY_ID = qos_policy.id
|
self.QOS_POLICY_ID = qos_policy.id
|
||||||
qos_rule = cls.conn.network.create_qos_bandwidth_limit_rule(
|
qos_rule = self.conn.network.create_qos_bandwidth_limit_rule(
|
||||||
cls.QOS_POLICY_ID, max_kbps=cls.RULE_MAX_KBPS,
|
self.QOS_POLICY_ID, max_kbps=self.RULE_MAX_KBPS,
|
||||||
max_burst_kbps=cls.RULE_MAX_BURST_KBPS,
|
max_burst_kbps=self.RULE_MAX_BURST_KBPS,
|
||||||
direction=cls.RULE_DIRECTION,
|
direction=self.RULE_DIRECTION,
|
||||||
)
|
)
|
||||||
assert isinstance(qos_rule,
|
assert isinstance(qos_rule,
|
||||||
_qos_bandwidth_limit_rule.QoSBandwidthLimitRule)
|
_qos_bandwidth_limit_rule.QoSBandwidthLimitRule)
|
||||||
cls.assertIs(cls.RULE_MAX_KBPS, qos_rule.max_kbps)
|
self.assertEqual(self.RULE_MAX_KBPS, qos_rule.max_kbps)
|
||||||
cls.assertIs(cls.RULE_MAX_BURST_KBPS, qos_rule.max_burst_kbps)
|
self.assertEqual(self.RULE_MAX_BURST_KBPS, qos_rule.max_burst_kbps)
|
||||||
cls.assertIs(cls.RULE_DIRECTION, qos_rule.direction)
|
self.assertEqual(self.RULE_DIRECTION, qos_rule.direction)
|
||||||
cls.RULE_ID = qos_rule.id
|
self.RULE_ID = qos_rule.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
rule = self.conn.network.delete_qos_minimum_bandwidth_rule(
|
||||||
rule = cls.conn.network.delete_qos_minimum_bandwidth_rule(
|
self.RULE_ID,
|
||||||
cls.RULE_ID,
|
self.QOS_POLICY_ID)
|
||||||
cls.QOS_POLICY_ID)
|
qos_policy = self.conn.network.delete_qos_policy(self.QOS_POLICY_ID)
|
||||||
qos_policy = cls.conn.network.delete_qos_policy(cls.QOS_POLICY_ID)
|
self.assertIsNone(rule)
|
||||||
cls.assertIs(None, rule)
|
self.assertIsNone(qos_policy)
|
||||||
cls.assertIs(None, qos_policy)
|
super(TestQoSBandwidthLimitRule, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_qos_bandwidth_limit_rule(
|
sot = self.conn.network.find_qos_bandwidth_limit_rule(
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import (qos_dscp_marking_rule as
|
from openstack.network.v2 import (qos_dscp_marking_rule as
|
||||||
_qos_dscp_marking_rule)
|
_qos_dscp_marking_rule)
|
||||||
@@ -20,37 +19,36 @@ from openstack.tests.functional import base
|
|||||||
class TestQoSDSCPMarkingRule(base.BaseFunctionalTest):
|
class TestQoSDSCPMarkingRule(base.BaseFunctionalTest):
|
||||||
|
|
||||||
QOS_POLICY_ID = None
|
QOS_POLICY_ID = None
|
||||||
QOS_POLICY_NAME = uuid.uuid4().hex
|
|
||||||
QOS_IS_SHARED = False
|
QOS_IS_SHARED = False
|
||||||
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
||||||
RULE_ID = uuid.uuid4().hex
|
|
||||||
RULE_DSCP_MARK = 36
|
RULE_DSCP_MARK = 36
|
||||||
RULE_DSCP_MARK_NEW = 40
|
RULE_DSCP_MARK_NEW = 40
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestQoSDSCPMarkingRule, self).setUp()
|
||||||
super(TestQoSDSCPMarkingRule, cls).setUpClass()
|
self.QOS_POLICY_NAME = self.getUniqueString()
|
||||||
qos_policy = cls.conn.network.create_qos_policy(
|
self.RULE_ID = self.getUniqueString()
|
||||||
description=cls.QOS_POLICY_DESCRIPTION,
|
qos_policy = self.conn.network.create_qos_policy(
|
||||||
name=cls.QOS_POLICY_NAME,
|
description=self.QOS_POLICY_DESCRIPTION,
|
||||||
shared=cls.QOS_IS_SHARED,
|
name=self.QOS_POLICY_NAME,
|
||||||
|
shared=self.QOS_IS_SHARED,
|
||||||
)
|
)
|
||||||
cls.QOS_POLICY_ID = qos_policy.id
|
self.QOS_POLICY_ID = qos_policy.id
|
||||||
qos_rule = cls.conn.network.create_qos_dscp_marking_rule(
|
qos_rule = self.conn.network.create_qos_dscp_marking_rule(
|
||||||
cls.QOS_POLICY_ID, dscp_mark=cls.RULE_DSCP_MARK,
|
self.QOS_POLICY_ID, dscp_mark=self.RULE_DSCP_MARK,
|
||||||
)
|
)
|
||||||
assert isinstance(qos_rule, _qos_dscp_marking_rule.QoSDSCPMarkingRule)
|
assert isinstance(qos_rule, _qos_dscp_marking_rule.QoSDSCPMarkingRule)
|
||||||
cls.assertIs(cls.RULE_DSCP_MARK, qos_rule.dscp_mark)
|
self.assertEqual(self.RULE_DSCP_MARK, qos_rule.dscp_mark)
|
||||||
cls.RULE_ID = qos_rule.id
|
self.RULE_ID = qos_rule.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
rule = self.conn.network.delete_qos_minimum_bandwidth_rule(
|
||||||
rule = cls.conn.network.delete_qos_minimum_bandwidth_rule(
|
self.RULE_ID,
|
||||||
cls.RULE_ID,
|
self.QOS_POLICY_ID)
|
||||||
cls.QOS_POLICY_ID)
|
qos_policy = self.conn.network.delete_qos_policy(self.QOS_POLICY_ID)
|
||||||
qos_policy = cls.conn.network.delete_qos_policy(cls.QOS_POLICY_ID)
|
self.assertIsNone(rule)
|
||||||
cls.assertIs(None, rule)
|
self.assertIsNone(qos_policy)
|
||||||
cls.assertIs(None, qos_policy)
|
super(TestQoSDSCPMarkingRule, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_qos_dscp_marking_rule(
|
sot = self.conn.network.find_qos_dscp_marking_rule(
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import (qos_minimum_bandwidth_rule as
|
from openstack.network.v2 import (qos_minimum_bandwidth_rule as
|
||||||
_qos_minimum_bandwidth_rule)
|
_qos_minimum_bandwidth_rule)
|
||||||
@@ -20,7 +19,6 @@ from openstack.tests.functional import base
|
|||||||
class TestQoSMinimumBandwidthRule(base.BaseFunctionalTest):
|
class TestQoSMinimumBandwidthRule(base.BaseFunctionalTest):
|
||||||
|
|
||||||
QOS_POLICY_ID = None
|
QOS_POLICY_ID = None
|
||||||
QOS_POLICY_NAME = uuid.uuid4().hex
|
|
||||||
QOS_IS_SHARED = False
|
QOS_IS_SHARED = False
|
||||||
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
||||||
RULE_ID = None
|
RULE_ID = None
|
||||||
@@ -28,33 +26,33 @@ class TestQoSMinimumBandwidthRule(base.BaseFunctionalTest):
|
|||||||
RULE_MIN_KBPS_NEW = 1800
|
RULE_MIN_KBPS_NEW = 1800
|
||||||
RULE_DIRECTION = 'egress'
|
RULE_DIRECTION = 'egress'
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestQoSMinimumBandwidthRule, self).setUp()
|
||||||
super(TestQoSMinimumBandwidthRule, cls).setUpClass()
|
self.QOS_POLICY_NAME = self.getUniqueString()
|
||||||
qos_policy = cls.conn.network.create_qos_policy(
|
qos_policy = self.conn.network.create_qos_policy(
|
||||||
description=cls.QOS_POLICY_DESCRIPTION,
|
description=self.QOS_POLICY_DESCRIPTION,
|
||||||
name=cls.QOS_POLICY_NAME,
|
name=self.QOS_POLICY_NAME,
|
||||||
shared=cls.QOS_IS_SHARED,
|
shared=self.QOS_IS_SHARED,
|
||||||
)
|
)
|
||||||
cls.QOS_POLICY_ID = qos_policy.id
|
self.QOS_POLICY_ID = qos_policy.id
|
||||||
qos_min_bw_rule = cls.conn.network.create_qos_minimum_bandwidth_rule(
|
qos_min_bw_rule = self.conn.network.create_qos_minimum_bandwidth_rule(
|
||||||
cls.QOS_POLICY_ID, direction=cls.RULE_DIRECTION,
|
self.QOS_POLICY_ID, direction=self.RULE_DIRECTION,
|
||||||
min_kbps=cls.RULE_MIN_KBPS,
|
min_kbps=self.RULE_MIN_KBPS,
|
||||||
)
|
)
|
||||||
assert isinstance(qos_min_bw_rule,
|
assert isinstance(qos_min_bw_rule,
|
||||||
_qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule)
|
_qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule)
|
||||||
cls.assertIs(cls.RULE_MIN_KBPS, qos_min_bw_rule.min_kbps)
|
self.assertEqual(self.RULE_MIN_KBPS, qos_min_bw_rule.min_kbps)
|
||||||
cls.assertIs(cls.RULE_DIRECTION, qos_min_bw_rule.direction)
|
self.assertEqual(self.RULE_DIRECTION, qos_min_bw_rule.direction)
|
||||||
cls.RULE_ID = qos_min_bw_rule.id
|
self.RULE_ID = qos_min_bw_rule.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
rule = self.conn.network.delete_qos_minimum_bandwidth_rule(
|
||||||
rule = cls.conn.network.delete_qos_minimum_bandwidth_rule(
|
self.RULE_ID,
|
||||||
cls.RULE_ID,
|
self.QOS_POLICY_ID)
|
||||||
cls.QOS_POLICY_ID)
|
qos_policy = self.conn.network.delete_qos_policy(self.QOS_POLICY_ID)
|
||||||
qos_policy = cls.conn.network.delete_qos_policy(cls.QOS_POLICY_ID)
|
self.assertIsNone(rule)
|
||||||
cls.assertIs(None, rule)
|
self.assertIsNone(qos_policy)
|
||||||
cls.assertIs(None, qos_policy)
|
super(TestQoSMinimumBandwidthRule, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_qos_minimum_bandwidth_rule(
|
sot = self.conn.network.find_qos_minimum_bandwidth_rule(
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import qos_policy as _qos_policy
|
from openstack.network.v2 import qos_policy as _qos_policy
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -19,30 +18,29 @@ from openstack.tests.functional import base
|
|||||||
class TestQoSPolicy(base.BaseFunctionalTest):
|
class TestQoSPolicy(base.BaseFunctionalTest):
|
||||||
|
|
||||||
QOS_POLICY_ID = None
|
QOS_POLICY_ID = None
|
||||||
QOS_POLICY_NAME = uuid.uuid4().hex
|
|
||||||
QOS_POLICY_NAME_UPDATED = uuid.uuid4().hex
|
|
||||||
IS_SHARED = False
|
IS_SHARED = False
|
||||||
IS_DEFAULT = False
|
IS_DEFAULT = False
|
||||||
RULES = []
|
RULES = []
|
||||||
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
QOS_POLICY_DESCRIPTION = "QoS policy description"
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestQoSPolicy, self).setUp()
|
||||||
super(TestQoSPolicy, cls).setUpClass()
|
self.QOS_POLICY_NAME = self.getUniqueString()
|
||||||
qos = cls.conn.network.create_qos_policy(
|
self.QOS_POLICY_NAME_UPDATED = self.getUniqueString()
|
||||||
description=cls.QOS_POLICY_DESCRIPTION,
|
qos = self.conn.network.create_qos_policy(
|
||||||
name=cls.QOS_POLICY_NAME,
|
description=self.QOS_POLICY_DESCRIPTION,
|
||||||
shared=cls.IS_SHARED,
|
name=self.QOS_POLICY_NAME,
|
||||||
is_default=cls.IS_DEFAULT,
|
shared=self.IS_SHARED,
|
||||||
|
is_default=self.IS_DEFAULT,
|
||||||
)
|
)
|
||||||
assert isinstance(qos, _qos_policy.QoSPolicy)
|
assert isinstance(qos, _qos_policy.QoSPolicy)
|
||||||
cls.assertIs(cls.QOS_POLICY_NAME, qos.name)
|
self.assertEqual(self.QOS_POLICY_NAME, qos.name)
|
||||||
cls.QOS_POLICY_ID = qos.id
|
self.QOS_POLICY_ID = qos.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_qos_policy(self.QOS_POLICY_ID)
|
||||||
sot = cls.conn.network.delete_qos_policy(cls.QOS_POLICY_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestQoSPolicy, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_qos_policy(self.QOS_POLICY_NAME)
|
sot = self.conn.network.find_qos_policy(self.QOS_POLICY_NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import rbac_policy
|
from openstack.network.v2 import rbac_policy
|
||||||
@@ -19,37 +18,38 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestRBACPolicy(base.BaseFunctionalTest):
|
class TestRBACPolicy(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NET_NAME = 'net-' + uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
ACTION = 'access_as_shared'
|
ACTION = 'access_as_shared'
|
||||||
OBJ_TYPE = 'network'
|
OBJ_TYPE = 'network'
|
||||||
TARGET_TENANT_ID = '*'
|
TARGET_TENANT_ID = '*'
|
||||||
NET_ID = None
|
NET_ID = None
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestRBACPolicy, self).setUp()
|
||||||
super(TestRBACPolicy, cls).setUpClass()
|
self.NET_NAME = self.getUniqueString('net')
|
||||||
net = cls.conn.network.create_network(name=cls.NET_NAME)
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
net = self.conn.network.create_network(name=self.NET_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.NET_ID = net.id
|
self.NET_ID = net.id
|
||||||
|
|
||||||
sot = cls.conn.network.\
|
sot = self.conn.network.create_rbac_policy(
|
||||||
create_rbac_policy(action=cls.ACTION,
|
action=self.ACTION,
|
||||||
object_type=cls.OBJ_TYPE,
|
object_type=self.OBJ_TYPE,
|
||||||
target_tenant=cls.TARGET_TENANT_ID,
|
target_tenant=self.TARGET_TENANT_ID,
|
||||||
object_id=cls.NET_ID)
|
object_id=self.NET_ID)
|
||||||
assert isinstance(sot, rbac_policy.RBACPolicy)
|
assert isinstance(sot, rbac_policy.RBACPolicy)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_rbac_policy(
|
||||||
sot = cls.conn.network.delete_rbac_policy(cls.ID,
|
self.ID,
|
||||||
ignore_missing=False)
|
ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_network(cls.NET_ID,
|
sot = self.conn.network.delete_network(
|
||||||
ignore_missing=False)
|
self.NET_ID,
|
||||||
cls.assertIs(None, sot)
|
ignore_missing=False)
|
||||||
|
self.assertIsNone(sot)
|
||||||
|
super(TestRBACPolicy, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_rbac_policy(self.ID)
|
sot = self.conn.network.find_rbac_policy(self.ID)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import router
|
from openstack.network.v2 import router
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,22 +17,21 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestRouter(base.BaseFunctionalTest):
|
class TestRouter(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestRouter, self).setUp()
|
||||||
super(TestRouter, cls).setUpClass()
|
self.NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_router(name=cls.NAME)
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
sot = self.conn.network.create_router(name=self.NAME)
|
||||||
assert isinstance(sot, router.Router)
|
assert isinstance(sot, router.Router)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_router(self.ID, ignore_missing=False)
|
||||||
sot = cls.conn.network.delete_router(cls.ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestRouter, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_router(self.NAME)
|
sot = self.conn.network.find_router(self.NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import router
|
from openstack.network.v2 import router
|
||||||
@@ -20,9 +19,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestRouterInterface(base.BaseFunctionalTest):
|
class TestRouterInterface(base.BaseFunctionalTest):
|
||||||
|
|
||||||
ROUTER_NAME = uuid.uuid4().hex
|
|
||||||
NET_NAME = uuid.uuid4().hex
|
|
||||||
SUB_NAME = uuid.uuid4().hex
|
|
||||||
CIDR = "10.100.0.0/16"
|
CIDR = "10.100.0.0/16"
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
ROUTER_ID = None
|
ROUTER_ID = None
|
||||||
@@ -30,42 +26,45 @@ class TestRouterInterface(base.BaseFunctionalTest):
|
|||||||
SUB_ID = None
|
SUB_ID = None
|
||||||
ROT = None
|
ROT = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestRouterInterface, self).setUp()
|
||||||
super(TestRouterInterface, cls).setUpClass()
|
self.ROUTER_NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_router(name=cls.ROUTER_NAME)
|
self.NET_NAME = self.getUniqueString()
|
||||||
|
self.SUB_NAME = self.getUniqueString()
|
||||||
|
sot = self.conn.network.create_router(name=self.ROUTER_NAME)
|
||||||
assert isinstance(sot, router.Router)
|
assert isinstance(sot, router.Router)
|
||||||
cls.assertIs(cls.ROUTER_NAME, sot.name)
|
self.assertEqual(self.ROUTER_NAME, sot.name)
|
||||||
net = cls.conn.network.create_network(name=cls.NET_NAME)
|
net = self.conn.network.create_network(name=self.NET_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.NET_NAME, net.name)
|
self.assertEqual(self.NET_NAME, net.name)
|
||||||
sub = cls.conn.network.create_subnet(name=cls.SUB_NAME,
|
sub = self.conn.network.create_subnet(
|
||||||
ip_version=cls.IPV4,
|
name=self.SUB_NAME,
|
||||||
network_id=net.id,
|
ip_version=self.IPV4,
|
||||||
cidr=cls.CIDR)
|
network_id=net.id,
|
||||||
|
cidr=self.CIDR)
|
||||||
assert isinstance(sub, subnet.Subnet)
|
assert isinstance(sub, subnet.Subnet)
|
||||||
cls.assertIs(cls.SUB_NAME, sub.name)
|
self.assertEqual(self.SUB_NAME, sub.name)
|
||||||
cls.ROUTER_ID = sot.id
|
self.ROUTER_ID = sot.id
|
||||||
cls.ROT = sot
|
self.ROT = sot
|
||||||
cls.NET_ID = net.id
|
self.NET_ID = net.id
|
||||||
cls.SUB_ID = sub.id
|
self.SUB_ID = sub.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_router(
|
||||||
sot = cls.conn.network.delete_router(cls.ROUTER_ID,
|
self.ROUTER_ID, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_subnet(
|
||||||
sot = cls.conn.network.delete_subnet(cls.SUB_ID, ignore_missing=False)
|
self.SUB_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
sot = cls.conn.network.delete_network(cls.NET_ID, ignore_missing=False)
|
sot = self.conn.network.delete_network(
|
||||||
cls.assertIs(None, sot)
|
self.NET_ID, ignore_missing=False)
|
||||||
|
self.assertIsNone(sot)
|
||||||
|
super(TestRouterInterface, self).tearDown()
|
||||||
|
|
||||||
def test_router_add_interface(self):
|
def test_router_add_remove_interface(self):
|
||||||
iface = self.ROT.add_interface(self.conn.session,
|
iface = self.ROT.add_interface(self.conn.session,
|
||||||
subnet_id=self.SUB_ID)
|
subnet_id=self.SUB_ID)
|
||||||
self._verification(iface)
|
self._verification(iface)
|
||||||
|
|
||||||
def test_router_remove_interface(self):
|
|
||||||
iface = self.ROT.remove_interface(self.conn.session,
|
iface = self.ROT.remove_interface(self.conn.session,
|
||||||
subnet_id=self.SUB_ID)
|
subnet_id=self.SUB_ID)
|
||||||
self._verification(iface)
|
self._verification(iface)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import security_group
|
from openstack.network.v2 import security_group
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,22 +17,21 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSecurityGroup(base.BaseFunctionalTest):
|
class TestSecurityGroup(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestSecurityGroup, self).setUp()
|
||||||
super(TestSecurityGroup, cls).setUpClass()
|
self.NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_security_group(name=cls.NAME)
|
sot = self.conn.network.create_security_group(name=self.NAME)
|
||||||
assert isinstance(sot, security_group.SecurityGroup)
|
assert isinstance(sot, security_group.SecurityGroup)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_security_group(
|
||||||
sot = cls.conn.network.delete_security_group(cls.ID,
|
self.ID, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestSecurityGroup, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_security_group(self.NAME)
|
sot = self.conn.network.find_security_group(self.NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import security_group
|
from openstack.network.v2 import security_group
|
||||||
from openstack.network.v2 import security_group_rule
|
from openstack.network.v2 import security_group_rule
|
||||||
@@ -19,7 +18,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSecurityGroupRule(base.BaseFunctionalTest):
|
class TestSecurityGroupRule(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
IPV4 = 'IPv4'
|
IPV4 = 'IPv4'
|
||||||
PROTO = 'tcp'
|
PROTO = 'tcp'
|
||||||
PORT = 22
|
PORT = 22
|
||||||
@@ -27,29 +25,29 @@ class TestSecurityGroupRule(base.BaseFunctionalTest):
|
|||||||
ID = None
|
ID = None
|
||||||
RULE_ID = None
|
RULE_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestSecurityGroupRule, self).setUp()
|
||||||
super(TestSecurityGroupRule, cls).setUpClass()
|
self.NAME = self.getUniqueString()
|
||||||
sot = cls.conn.network.create_security_group(name=cls.NAME)
|
sot = self.conn.network.create_security_group(name=self.NAME)
|
||||||
assert isinstance(sot, security_group.SecurityGroup)
|
assert isinstance(sot, security_group.SecurityGroup)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
rul = cls.conn.network.create_security_group_rule(
|
rul = self.conn.network.create_security_group_rule(
|
||||||
direction=cls.DIR, ethertype=cls.IPV4,
|
direction=self.DIR, ethertype=self.IPV4,
|
||||||
port_range_max=cls.PORT, port_range_min=cls.PORT,
|
port_range_max=self.PORT, port_range_min=self.PORT,
|
||||||
protocol=cls.PROTO, security_group_id=cls.ID)
|
protocol=self.PROTO, security_group_id=self.ID)
|
||||||
assert isinstance(rul, security_group_rule.SecurityGroupRule)
|
assert isinstance(rul, security_group_rule.SecurityGroupRule)
|
||||||
cls.assertIs(cls.ID, rul.security_group_id)
|
self.assertEqual(self.ID, rul.security_group_id)
|
||||||
cls.RULE_ID = rul.id
|
self.RULE_ID = rul.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_security_group_rule(
|
||||||
sot = cls.conn.network.delete_security_group_rule(cls.RULE_ID,
|
self.RULE_ID, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_security_group(
|
||||||
sot = cls.conn.network.delete_security_group(cls.ID,
|
self.ID, ignore_missing=False)
|
||||||
ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestSecurityGroupRule, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_security_group_rule(self.RULE_ID)
|
sot = self.conn.network.find_security_group_rule(self.RULE_ID)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import segment
|
from openstack.network.v2 import segment
|
||||||
@@ -19,7 +18,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSegment(base.BaseFunctionalTest):
|
class TestSegment(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NETWORK_NAME = uuid.uuid4().hex
|
|
||||||
NETWORK_TYPE = None
|
NETWORK_TYPE = None
|
||||||
PHYSICAL_NETWORK = None
|
PHYSICAL_NETWORK = None
|
||||||
SEGMENTATION_ID = None
|
SEGMENTATION_ID = None
|
||||||
@@ -27,88 +25,75 @@ class TestSegment(base.BaseFunctionalTest):
|
|||||||
SEGMENT_ID = None
|
SEGMENT_ID = None
|
||||||
SEGMENT_EXTENSION = None
|
SEGMENT_EXTENSION = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestSegment, self).setUp()
|
||||||
super(TestSegment, cls).setUpClass()
|
self.NETWORK_NAME = self.getUniqueString()
|
||||||
|
|
||||||
# NOTE(rtheis): The segment extension is not yet enabled by default.
|
# NOTE(rtheis): The segment extension is not yet enabled by default.
|
||||||
# Skip the tests if not enabled.
|
# Skip the tests if not enabled.
|
||||||
cls.SEGMENT_EXTENSION = cls.conn.network.find_extension('segment')
|
if not self.conn.network.find_extension('segment'):
|
||||||
|
self.skipTest('Segment extension disabled')
|
||||||
|
|
||||||
# Create a network to hold the segment.
|
# Create a network to hold the segment.
|
||||||
net = cls.conn.network.create_network(name=cls.NETWORK_NAME)
|
net = self.conn.network.create_network(name=self.NETWORK_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.NETWORK_NAME, net.name)
|
self.assertEqual(self.NETWORK_NAME, net.name)
|
||||||
cls.NETWORK_ID = net.id
|
self.NETWORK_ID = net.id
|
||||||
|
|
||||||
if cls.SEGMENT_EXTENSION:
|
if self.SEGMENT_EXTENSION:
|
||||||
# Get the segment for the network.
|
# Get the segment for the network.
|
||||||
for seg in cls.conn.network.segments():
|
for seg in self.conn.network.segments():
|
||||||
assert isinstance(seg, segment.Segment)
|
assert isinstance(seg, segment.Segment)
|
||||||
if cls.NETWORK_ID == seg.network_id:
|
if self.NETWORK_ID == seg.network_id:
|
||||||
cls.NETWORK_TYPE = seg.network_type
|
self.NETWORK_TYPE = seg.network_type
|
||||||
cls.PHYSICAL_NETWORK = seg.physical_network
|
self.PHYSICAL_NETWORK = seg.physical_network
|
||||||
cls.SEGMENTATION_ID = seg.segmentation_id
|
self.SEGMENTATION_ID = seg.segmentation_id
|
||||||
cls.SEGMENT_ID = seg.id
|
self.SEGMENT_ID = seg.id
|
||||||
break
|
break
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_network(
|
||||||
sot = cls.conn.network.delete_network(cls.NETWORK_ID,
|
self.NETWORK_ID,
|
||||||
ignore_missing=False)
|
ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
|
super(TestSegment, self).tearDown()
|
||||||
|
|
||||||
def test_create_delete(self):
|
def test_create_delete(self):
|
||||||
if self.SEGMENT_EXTENSION:
|
sot = self.conn.network.create_segment(
|
||||||
sot = self.conn.network.create_segment(
|
description='test description',
|
||||||
description='test description',
|
name='test name',
|
||||||
name='test name',
|
network_id=self.NETWORK_ID,
|
||||||
network_id=self.NETWORK_ID,
|
network_type='geneve',
|
||||||
network_type='geneve',
|
segmentation_id=2055,
|
||||||
segmentation_id=2055,
|
)
|
||||||
)
|
self.assertIsInstance(sot, segment.Segment)
|
||||||
self.assertIsInstance(sot, segment.Segment)
|
del_sot = self.conn.network.delete_segment(sot.id)
|
||||||
del_sot = self.conn.network.delete_segment(sot.id)
|
self.assertEqual('test description', sot.description)
|
||||||
self.assertEqual('test description', sot.description)
|
self.assertEqual('test name', sot.name)
|
||||||
self.assertEqual('test name', sot.name)
|
self.assertEqual(self.NETWORK_ID, sot.network_id)
|
||||||
self.assertEqual(self.NETWORK_ID, sot.network_id)
|
self.assertEqual('geneve', sot.network_type)
|
||||||
self.assertEqual('geneve', sot.network_type)
|
self.assertIsNone(sot.physical_network)
|
||||||
self.assertIsNone(sot.physical_network)
|
self.assertEqual(2055, sot.segmentation_id)
|
||||||
self.assertEqual(2055, sot.segmentation_id)
|
self.assertIsNone(del_sot)
|
||||||
self.assertIsNone(del_sot)
|
|
||||||
else:
|
|
||||||
self.skipTest('Segment extension disabled')
|
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
if self.SEGMENT_EXTENSION:
|
sot = self.conn.network.find_segment(self.SEGMENT_ID)
|
||||||
sot = self.conn.network.find_segment(self.SEGMENT_ID)
|
self.assertEqual(self.SEGMENT_ID, sot.id)
|
||||||
self.assertEqual(self.SEGMENT_ID, sot.id)
|
|
||||||
else:
|
|
||||||
self.skipTest('Segment extension disabled')
|
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
if self.SEGMENT_EXTENSION:
|
sot = self.conn.network.get_segment(self.SEGMENT_ID)
|
||||||
sot = self.conn.network.get_segment(self.SEGMENT_ID)
|
self.assertEqual(self.SEGMENT_ID, sot.id)
|
||||||
self.assertEqual(self.SEGMENT_ID, sot.id)
|
self.assertIsNone(sot.name)
|
||||||
self.assertIsNone(sot.name)
|
self.assertEqual(self.NETWORK_ID, sot.network_id)
|
||||||
self.assertEqual(self.NETWORK_ID, sot.network_id)
|
self.assertEqual(self.NETWORK_TYPE, sot.network_type)
|
||||||
self.assertEqual(self.NETWORK_TYPE, sot.network_type)
|
self.assertEqual(self.PHYSICAL_NETWORK, sot.physical_network)
|
||||||
self.assertEqual(self.PHYSICAL_NETWORK, sot.physical_network)
|
self.assertEqual(self.SEGMENTATION_ID, sot.segmentation_id)
|
||||||
self.assertEqual(self.SEGMENTATION_ID, sot.segmentation_id)
|
|
||||||
else:
|
|
||||||
self.skipTest('Segment extension disabled')
|
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
if self.SEGMENT_EXTENSION:
|
ids = [o.id for o in self.conn.network.segments(name=None)]
|
||||||
ids = [o.id for o in self.conn.network.segments(name=None)]
|
self.assertIn(self.SEGMENT_ID, ids)
|
||||||
self.assertIn(self.SEGMENT_ID, ids)
|
|
||||||
else:
|
|
||||||
self.skipTest('Segment extension disabled')
|
|
||||||
|
|
||||||
def test_update(self):
|
def test_update(self):
|
||||||
if self.SEGMENT_EXTENSION:
|
sot = self.conn.network.update_segment(self.SEGMENT_ID,
|
||||||
sot = self.conn.network.update_segment(self.SEGMENT_ID,
|
description='update')
|
||||||
description='update')
|
self.assertEqual('update', sot.description)
|
||||||
self.assertEqual('update', sot.description)
|
|
||||||
else:
|
|
||||||
self.skipTest('Segment extension disabled')
|
|
||||||
|
@@ -21,25 +21,25 @@ class TestServiceProfile(base.BaseFunctionalTest):
|
|||||||
METAINFO = "FlAVOR_PROFILE_METAINFO"
|
METAINFO = "FlAVOR_PROFILE_METAINFO"
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestServiceProfile, self).setUp()
|
||||||
super(TestServiceProfile, cls).setUpClass()
|
service_profiles = self.conn.network.create_service_profile(
|
||||||
service_profiles = cls.conn.network.create_service_profile(
|
description=self.SERVICE_PROFILE_DESCRIPTION,
|
||||||
description=cls.SERVICE_PROFILE_DESCRIPTION,
|
metainfo=self.METAINFO,)
|
||||||
metainfo=cls.METAINFO,)
|
|
||||||
assert isinstance(service_profiles, _service_profile.ServiceProfile)
|
assert isinstance(service_profiles, _service_profile.ServiceProfile)
|
||||||
cls.assertIs(cls.SERVICE_PROFILE_DESCRIPTION,
|
self.assertEqual(
|
||||||
service_profiles.description)
|
self.SERVICE_PROFILE_DESCRIPTION,
|
||||||
cls.assertIs(cls.METAINFO, service_profiles.meta_info)
|
service_profiles.description)
|
||||||
|
self.assertEqual(self.METAINFO, service_profiles.meta_info)
|
||||||
|
|
||||||
cls.ID = service_profiles.id
|
self.ID = service_profiles.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
service_profiles = self.conn.network.delete_service_profile(
|
||||||
service_profiles = cls.conn.network.delete_service_profile(
|
self.ID,
|
||||||
cls.ID,
|
|
||||||
ignore_missing=True)
|
ignore_missing=True)
|
||||||
cls.assertIs(None, service_profiles)
|
self.assertIsNone(service_profiles)
|
||||||
|
super(TestServiceProfile, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
service_profiles = self.conn.network.find_service_profile(
|
service_profiles = self.conn.network.find_service_profile(
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import network
|
from openstack.network.v2 import network
|
||||||
from openstack.network.v2 import subnet
|
from openstack.network.v2 import subnet
|
||||||
@@ -19,9 +18,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSubnet(base.BaseFunctionalTest):
|
class TestSubnet(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NET_NAME = uuid.uuid4().hex
|
|
||||||
SUB_NAME = uuid.uuid4().hex
|
|
||||||
UPDATE_NAME = uuid.uuid4().hex
|
|
||||||
IPV4 = 4
|
IPV4 = 4
|
||||||
CIDR = "10.100.0.0/24"
|
CIDR = "10.100.0.0/24"
|
||||||
DNS_SERVERS = ["8.8.4.4", "8.8.8.8"]
|
DNS_SERVERS = ["8.8.4.4", "8.8.8.8"]
|
||||||
@@ -30,30 +26,34 @@ class TestSubnet(base.BaseFunctionalTest):
|
|||||||
NET_ID = None
|
NET_ID = None
|
||||||
SUB_ID = None
|
SUB_ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestSubnet, self).setUp()
|
||||||
super(TestSubnet, cls).setUpClass()
|
self.NET_NAME = self.getUniqueString()
|
||||||
net = cls.conn.network.create_network(name=cls.NET_NAME)
|
self.SUB_NAME = self.getUniqueString()
|
||||||
|
self.UPDATE_NAME = self.getUniqueString()
|
||||||
|
net = self.conn.network.create_network(name=self.NET_NAME)
|
||||||
assert isinstance(net, network.Network)
|
assert isinstance(net, network.Network)
|
||||||
cls.assertIs(cls.NET_NAME, net.name)
|
self.assertEqual(self.NET_NAME, net.name)
|
||||||
cls.NET_ID = net.id
|
self.NET_ID = net.id
|
||||||
sub = cls.conn.network.create_subnet(name=cls.SUB_NAME,
|
sub = self.conn.network.create_subnet(
|
||||||
ip_version=cls.IPV4,
|
name=self.SUB_NAME,
|
||||||
network_id=cls.NET_ID,
|
ip_version=self.IPV4,
|
||||||
cidr=cls.CIDR,
|
network_id=self.NET_ID,
|
||||||
dns_nameservers=cls.DNS_SERVERS,
|
cidr=self.CIDR,
|
||||||
allocation_pools=cls.POOL,
|
dns_nameservers=self.DNS_SERVERS,
|
||||||
host_routes=cls.ROUTES)
|
allocation_pools=self.POOL,
|
||||||
|
host_routes=self.ROUTES)
|
||||||
assert isinstance(sub, subnet.Subnet)
|
assert isinstance(sub, subnet.Subnet)
|
||||||
cls.assertIs(cls.SUB_NAME, sub.name)
|
self.assertEqual(self.SUB_NAME, sub.name)
|
||||||
cls.SUB_ID = sub.id
|
self.SUB_ID = sub.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_subnet(self.SUB_ID)
|
||||||
sot = cls.conn.network.delete_subnet(cls.SUB_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
sot = self.conn.network.delete_network(
|
||||||
sot = cls.conn.network.delete_network(cls.NET_ID, ignore_missing=False)
|
self.NET_ID, ignore_missing=False)
|
||||||
cls.assertIs(None, sot)
|
self.assertIsNone(sot)
|
||||||
|
super(TestSubnet, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_subnet(self.SUB_NAME)
|
sot = self.conn.network.find_subnet(self.SUB_NAME)
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.network.v2 import subnet_pool as _subnet_pool
|
from openstack.network.v2 import subnet_pool as _subnet_pool
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
@@ -18,8 +17,6 @@ from openstack.tests.functional import base
|
|||||||
|
|
||||||
class TestSubnetPool(base.BaseFunctionalTest):
|
class TestSubnetPool(base.BaseFunctionalTest):
|
||||||
|
|
||||||
SUBNET_POOL_NAME = uuid.uuid4().hex
|
|
||||||
SUBNET_POOL_NAME_UPDATED = uuid.uuid4().hex
|
|
||||||
SUBNET_POOL_ID = None
|
SUBNET_POOL_ID = None
|
||||||
MINIMUM_PREFIX_LENGTH = 8
|
MINIMUM_PREFIX_LENGTH = 8
|
||||||
DEFAULT_PREFIX_LENGTH = 24
|
DEFAULT_PREFIX_LENGTH = 24
|
||||||
@@ -29,25 +26,26 @@ class TestSubnetPool(base.BaseFunctionalTest):
|
|||||||
IP_VERSION = 4
|
IP_VERSION = 4
|
||||||
PREFIXES = ['10.100.0.0/24', '10.101.0.0/24']
|
PREFIXES = ['10.100.0.0/24', '10.101.0.0/24']
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestSubnetPool, self).setUp()
|
||||||
super(TestSubnetPool, cls).setUpClass()
|
self.SUBNET_POOL_NAME = self.getUniqueString()
|
||||||
subnet_pool = cls.conn.network.create_subnet_pool(
|
self.SUBNET_POOL_NAME_UPDATED = self.getUniqueString()
|
||||||
name=cls.SUBNET_POOL_NAME,
|
subnet_pool = self.conn.network.create_subnet_pool(
|
||||||
min_prefixlen=cls.MINIMUM_PREFIX_LENGTH,
|
name=self.SUBNET_POOL_NAME,
|
||||||
default_prefixlen=cls.DEFAULT_PREFIX_LENGTH,
|
min_prefixlen=self.MINIMUM_PREFIX_LENGTH,
|
||||||
max_prefixlen=cls.MAXIMUM_PREFIX_LENGTH,
|
default_prefixlen=self.DEFAULT_PREFIX_LENGTH,
|
||||||
default_quota=cls.DEFAULT_QUOTA,
|
max_prefixlen=self.MAXIMUM_PREFIX_LENGTH,
|
||||||
shared=cls.IS_SHARED,
|
default_quota=self.DEFAULT_QUOTA,
|
||||||
prefixes=cls.PREFIXES)
|
shared=self.IS_SHARED,
|
||||||
|
prefixes=self.PREFIXES)
|
||||||
assert isinstance(subnet_pool, _subnet_pool.SubnetPool)
|
assert isinstance(subnet_pool, _subnet_pool.SubnetPool)
|
||||||
cls.assertIs(cls.SUBNET_POOL_NAME, subnet_pool.name)
|
self.assertEqual(self.SUBNET_POOL_NAME, subnet_pool.name)
|
||||||
cls.SUBNET_POOL_ID = subnet_pool.id
|
self.SUBNET_POOL_ID = subnet_pool.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.network.delete_subnet_pool(self.SUBNET_POOL_ID)
|
||||||
sot = cls.conn.network.delete_subnet_pool(cls.SUBNET_POOL_ID)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestSubnetPool, self).tearDown()
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
sot = self.conn.network.find_subnet_pool(self.SUBNET_POOL_NAME)
|
sot = self.conn.network.find_subnet_pool(self.SUBNET_POOL_NAME)
|
||||||
|
@@ -10,20 +10,19 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type='object-store'),
|
|
||||||
'Object Storage service does not exist')
|
|
||||||
class TestAccount(base.BaseFunctionalTest):
|
class TestAccount(base.BaseFunctionalTest):
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def tearDownClass(cls):
|
super(TestAccount, self).setUp()
|
||||||
super(TestAccount, cls).tearDownClass()
|
self.require_service('object-store')
|
||||||
account = cls.conn.object_store.get_account_metadata()
|
|
||||||
cls.conn.object_store.delete_account_metadata(account.metadata.keys())
|
def tearDown(self):
|
||||||
|
account = self.conn.object_store.get_account_metadata()
|
||||||
|
self.conn.object_store.delete_account_metadata(account.metadata.keys())
|
||||||
|
super(TestAccount, self).tearDown()
|
||||||
|
|
||||||
def test_system_metadata(self):
|
def test_system_metadata(self):
|
||||||
account = self.conn.object_store.get_account_metadata()
|
account = self.conn.object_store.get_account_metadata()
|
||||||
|
@@ -10,31 +10,23 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.object_store.v1 import container as _container
|
from openstack.object_store.v1 import container as _container
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type='object-store'),
|
|
||||||
'Object Storage service does not exist')
|
|
||||||
class TestContainer(base.BaseFunctionalTest):
|
class TestContainer(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
def setUp(self):
|
||||||
|
super(TestContainer, self).setUp()
|
||||||
|
self.require_service('object-store')
|
||||||
|
|
||||||
@classmethod
|
self.NAME = self.getUniqueString()
|
||||||
def setUpClass(cls):
|
container = self.conn.object_store.create_container(name=self.NAME)
|
||||||
super(TestContainer, cls).setUpClass()
|
self.addEmptyCleanup(
|
||||||
container = cls.conn.object_store.create_container(name=cls.NAME)
|
self.conn.object_store.delete_container,
|
||||||
|
self.NAME, ignore_missing=False)
|
||||||
assert isinstance(container, _container.Container)
|
assert isinstance(container, _container.Container)
|
||||||
cls.assertIs(cls.NAME, container.name)
|
self.assertEqual(self.NAME, container.name)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls):
|
|
||||||
result = cls.conn.object_store.delete_container(cls.NAME,
|
|
||||||
ignore_missing=False)
|
|
||||||
cls.assertIs(None, result)
|
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
names = [o.name for o in self.conn.object_store.containers()]
|
names = [o.name for o in self.conn.object_store.containers()]
|
||||||
|
@@ -10,32 +10,26 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type='object-store'),
|
|
||||||
'Object Storage service does not exist')
|
|
||||||
class TestObject(base.BaseFunctionalTest):
|
class TestObject(base.BaseFunctionalTest):
|
||||||
|
|
||||||
FOLDER = uuid.uuid4().hex
|
|
||||||
FILE = uuid.uuid4().hex
|
|
||||||
DATA = b'abc'
|
DATA = b'abc'
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestObject, self).setUp()
|
||||||
super(TestObject, cls).setUpClass()
|
self.require_service('object-store')
|
||||||
cls.conn.object_store.create_container(name=cls.FOLDER)
|
|
||||||
cls.sot = cls.conn.object_store.upload_object(
|
|
||||||
container=cls.FOLDER, name=cls.FILE, data=cls.DATA)
|
|
||||||
|
|
||||||
@classmethod
|
self.FOLDER = self.getUniqueString()
|
||||||
def tearDownClass(cls):
|
self.FILE = self.getUniqueString()
|
||||||
super(TestObject, cls).tearDownClass()
|
self.conn.object_store.create_container(name=self.FOLDER)
|
||||||
cls.conn.object_store.delete_object(cls.sot, ignore_missing=False)
|
self.addCleanup(self.conn.object_store.delete_container, self.FOLDER)
|
||||||
cls.conn.object_store.delete_container(cls.FOLDER)
|
self.sot = self.conn.object_store.upload_object(
|
||||||
|
container=self.FOLDER, name=self.FILE, data=self.DATA)
|
||||||
|
self.addEmptyCleanup(
|
||||||
|
self.conn.object_store.delete_object, self.sot,
|
||||||
|
ignore_missing=False)
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
names = [o.name for o
|
names = [o.name for o
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from openstack import exceptions
|
from openstack import exceptions
|
||||||
@@ -19,8 +20,6 @@ from openstack.tests.functional.network.v2 import test_network
|
|||||||
|
|
||||||
|
|
||||||
@unittest.skip("bug/1525005")
|
@unittest.skip("bug/1525005")
|
||||||
@unittest.skipUnless(base.service_exists(service_type='orchestration'),
|
|
||||||
'Orchestration service does not exist')
|
|
||||||
class TestStack(base.BaseFunctionalTest):
|
class TestStack(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = 'test_stack'
|
NAME = 'test_stack'
|
||||||
@@ -29,48 +28,50 @@ class TestStack(base.BaseFunctionalTest):
|
|||||||
subnet = None
|
subnet = None
|
||||||
cidr = '10.99.99.0/16'
|
cidr = '10.99.99.0/16'
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestStack, self).setUp()
|
||||||
super(TestStack, cls).setUpClass()
|
self.require_service('orchestration')
|
||||||
if cls.conn.compute.find_keypair(cls.NAME) is None:
|
|
||||||
cls.conn.compute.create_keypair(name=cls.NAME)
|
if self.conn.compute.find_keypair(self.NAME) is None:
|
||||||
image = next(cls.conn.image.images())
|
self.conn.compute.create_keypair(name=self.NAME)
|
||||||
|
image = next(self.conn.image.images())
|
||||||
tname = "openstack/tests/functional/orchestration/v1/hello_world.yaml"
|
tname = "openstack/tests/functional/orchestration/v1/hello_world.yaml"
|
||||||
with open(tname) as f:
|
with open(tname) as f:
|
||||||
template = f.read()
|
template = f.read()
|
||||||
cls.network, cls.subnet = test_network.create_network(cls.conn,
|
self.network, self.subnet = test_network.create_network(
|
||||||
cls.NAME,
|
self.conn,
|
||||||
cls.cidr)
|
self.NAME,
|
||||||
|
self.cidr)
|
||||||
parameters = {
|
parameters = {
|
||||||
'image': image.id,
|
'image': image.id,
|
||||||
'key_name': cls.NAME,
|
'key_name': self.NAME,
|
||||||
'network': cls.network.id,
|
'network': self.network.id,
|
||||||
}
|
}
|
||||||
sot = cls.conn.orchestration.create_stack(
|
sot = self.conn.orchestration.create_stack(
|
||||||
name=cls.NAME,
|
name=self.NAME,
|
||||||
parameters=parameters,
|
parameters=parameters,
|
||||||
template=template,
|
template=template,
|
||||||
)
|
)
|
||||||
assert isinstance(sot, stack.Stack)
|
assert isinstance(sot, stack.Stack)
|
||||||
cls.assertIs(True, (sot.id is not None))
|
self.assertEqual(True, (sot.id is not None))
|
||||||
cls.stack = sot
|
self.stack = sot
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.conn.orchestration.wait_for_status(
|
self.conn.orchestration.wait_for_status(
|
||||||
sot, status='CREATE_COMPLETE', failures=['CREATE_FAILED'])
|
sot, status='CREATE_COMPLETE', failures=['CREATE_FAILED'])
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
self.conn.orchestration.delete_stack(self.stack, ignore_missing=False)
|
||||||
super(TestStack, cls).tearDownClass()
|
self.conn.compute.delete_keypair(self.NAME)
|
||||||
cls.conn.orchestration.delete_stack(cls.stack, ignore_missing=False)
|
|
||||||
cls.conn.compute.delete_keypair(cls.NAME)
|
|
||||||
# Need to wait for the stack to go away before network delete
|
# Need to wait for the stack to go away before network delete
|
||||||
try:
|
try:
|
||||||
cls.conn.orchestration.wait_for_status(
|
self.conn.orchestration.wait_for_status(
|
||||||
cls.stack, 'DELETE_COMPLETE')
|
self.stack, 'DELETE_COMPLETE')
|
||||||
except exceptions.NotFoundException:
|
except exceptions.NotFoundException:
|
||||||
pass
|
pass
|
||||||
cls.linger_for_delete()
|
# TODO(shade) sleeping in tests is bad mmkay?
|
||||||
test_network.delete_network(cls.conn, cls.network, cls.subnet)
|
time.sleep(40)
|
||||||
|
test_network.delete_network(self.conn, self.network, self.subnet)
|
||||||
|
super(TestStack, self).tearDown()
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
names = [o.name for o in self.conn.orchestration.stacks()]
|
names = [o.name for o in self.conn.orchestration.stacks()]
|
||||||
|
@@ -11,28 +11,25 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.telemetry.alarm.v2 import alarm
|
from openstack.telemetry.alarm.v2 import alarm
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skip("bug/1524468")
|
@unittest.skip("bug/1524468")
|
||||||
@unittest.skipUnless(base.service_exists(service_type="alarming"),
|
|
||||||
"Alarming service does not exist")
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestAlarm(base.BaseFunctionalTest):
|
class TestAlarm(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
ID = None
|
ID = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAlarm, self).setUp()
|
||||||
super(TestAlarm, cls).setUpClass()
|
self.require_service('alarming')
|
||||||
meter = next(cls.conn.telemetry.meters())
|
self.require_service('metering')
|
||||||
sot = cls.conn.alarm.create_alarm(
|
|
||||||
name=cls.NAME,
|
self.NAME = self.getUniqueString()
|
||||||
|
meter = next(self.conn.telemetry.meters())
|
||||||
|
sot = self.conn.alarm.create_alarm(
|
||||||
|
name=self.NAME,
|
||||||
type='threshold',
|
type='threshold',
|
||||||
threshold_rule={
|
threshold_rule={
|
||||||
'meter_name': meter.name,
|
'meter_name': meter.name,
|
||||||
@@ -40,13 +37,13 @@ class TestAlarm(base.BaseFunctionalTest):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert isinstance(sot, alarm.Alarm)
|
assert isinstance(sot, alarm.Alarm)
|
||||||
cls.assertIs(cls.NAME, sot.name)
|
self.assertEqual(self.NAME, sot.name)
|
||||||
cls.ID = sot.id
|
self.ID = sot.id
|
||||||
|
|
||||||
@classmethod
|
def tearDown(self):
|
||||||
def tearDownClass(cls):
|
sot = self.conn.alarm.delete_alarm(self.ID, ignore_missing=False)
|
||||||
sot = cls.conn.alarm.delete_alarm(cls.ID, ignore_missing=False)
|
self.assertIsNone(sot)
|
||||||
cls.assertIs(None, sot)
|
super(TestAlarm, self).tearDown()
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
sot = self.conn.alarm.get_alarm(self.ID)
|
sot = self.conn.alarm.get_alarm(self.ID)
|
||||||
|
@@ -11,38 +11,32 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skip("bug/1524468")
|
@unittest.skip("bug/1524468")
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="alarming"),
|
|
||||||
"Alarming service does not exist")
|
|
||||||
class TestAlarmChange(base.BaseFunctionalTest):
|
class TestAlarmChange(base.BaseFunctionalTest):
|
||||||
|
|
||||||
NAME = uuid.uuid4().hex
|
|
||||||
alarm = None
|
alarm = None
|
||||||
|
|
||||||
@classmethod
|
def setUp(self):
|
||||||
def setUpClass(cls):
|
super(TestAlarmChange, self).setUp()
|
||||||
super(TestAlarmChange, cls).setUpClass()
|
self.require_service('alarming')
|
||||||
meter = next(cls.conn.telemetry.meters())
|
self.require_service('metering')
|
||||||
alarm = cls.conn.alarm.create_alarm(
|
|
||||||
name=cls.NAME,
|
self.NAME = self.getUniqueString()
|
||||||
|
meter = next(self.conn.telemetry.meters())
|
||||||
|
self.alarm = self.conn.alarm.create_alarm(
|
||||||
|
name=self.NAME,
|
||||||
type='threshold',
|
type='threshold',
|
||||||
threshold_rule={
|
threshold_rule={
|
||||||
'meter_name': meter.name,
|
'meter_name': meter.name,
|
||||||
'threshold': 1.1,
|
'threshold': 1.1,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
cls.alarm = alarm
|
self.addCleanup(
|
||||||
|
self.conn.alarm.delete_alarm, self.alarm, ignore_missing=False)
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls):
|
|
||||||
cls.conn.alarm.delete_alarm(cls.alarm, ignore_missing=False)
|
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
change = next(self.conn.alarm.alarm_changes(self.alarm))
|
change = next(self.conn.alarm.alarm_changes(self.alarm))
|
||||||
|
@@ -10,15 +10,15 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestCapability(base.BaseFunctionalTest):
|
class TestCapability(base.BaseFunctionalTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestCapability, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
ids = [o.id for o in self.conn.telemetry.capabilities()]
|
ids = [o.id for o in self.conn.telemetry.capabilities()]
|
||||||
self.assertIn('resources:query:simple', ids)
|
self.assertIn('resources:query:simple', ids)
|
||||||
|
@@ -10,21 +10,20 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestMeter(base.BaseFunctionalTest):
|
class TestMeter(base.BaseFunctionalTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestMeter, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
# TODO(thowe): Remove this in favor of create_meter call.
|
# TODO(thowe): Remove this in favor of create_meter call.
|
||||||
# Since we do not have a create meter method at the moment
|
# Since we do not have a create meter method at the moment
|
||||||
# make sure there is some data in there
|
# make sure there is some data in there
|
||||||
name = uuid.uuid4().hex
|
name = self.getUniqueString()
|
||||||
tainer = self.conn.object_store.create_container(name=name)
|
tainer = self.conn.object_store.create_container(name=name)
|
||||||
self.conn.object_store.delete_container(tainer)
|
self.conn.object_store.delete_container(tainer)
|
||||||
|
|
||||||
|
@@ -10,15 +10,15 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestResource(base.BaseFunctionalTest):
|
class TestResource(base.BaseFunctionalTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestResource, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
ids = [o.resource_id for o in self.conn.telemetry.resources()]
|
ids = [o.resource_id for o in self.conn.telemetry.resources()]
|
||||||
self.assertNotEqual(0, len(ids))
|
self.assertNotEqual(0, len(ids))
|
||||||
|
@@ -10,16 +10,16 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openstack.telemetry.v2 import sample
|
from openstack.telemetry.v2 import sample
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestSample(base.BaseFunctionalTest):
|
class TestSample(base.BaseFunctionalTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestSample, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
for meter in self.conn.telemetry.meters():
|
for meter in self.conn.telemetry.meters():
|
||||||
for sot in self.conn.telemetry.samples(meter):
|
for sot in self.conn.telemetry.samples(meter):
|
||||||
|
@@ -10,15 +10,15 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openstack.tests.functional import base
|
from openstack.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
|
|
||||||
"Metering service does not exist")
|
|
||||||
class TestStatistics(base.BaseFunctionalTest):
|
class TestStatistics(base.BaseFunctionalTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestStatistics, self).setUp()
|
||||||
|
self.require_service('metering')
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
for met in self.conn.telemetry.meters():
|
for met in self.conn.telemetry.meters():
|
||||||
for stat in self.conn.telemetry.statistics(met):
|
for stat in self.conn.telemetry.statistics(met):
|
||||||
|
Reference in New Issue
Block a user