Use Zun's API to cleanup network after test

Starting from API version 1.27, there is an API to delete docker
network. This commit modifies the tests to use this new API.

Depends-On: https://review.openstack.org/#/c/615402/
Change-Id: Ib979d911a15818bdadce025db569c24c5dbb49e0
This commit is contained in:
Hongbin Lu 2018-12-06 03:58:55 +00:00
parent 50ec15fd93
commit a3ed016af4
2 changed files with 37 additions and 7 deletions

View File

@ -178,6 +178,19 @@ class ZunClient(rest_client.RestClient):
return url
@classmethod
def networks_uri(cls):
url = "/networks/"
return url
@classmethod
def network_uri(cls, network_id, params=None):
url = "{0}/{1}".format(cls.networks_uri(), network_id)
if params:
url = cls.add_params(url, params)
return url
def post_container(self, model, **kwargs):
"""Makes POST /container request
@ -344,6 +357,9 @@ class ZunClient(rest_client.RestClient):
def delete_capsule(self, capsule_id, params=None):
return self.delete(self.capsule_uri(capsule_id, params=params))
def delete_network(self, network_id, params=None):
return self.delete(self.network_uri(network_id, params=params))
@contextlib.contextmanager
def docker_client(docker_auth_url):

View File

@ -14,8 +14,10 @@
from oslo_log import log as logging
from tempest import config
from tempest.lib.common import api_version_request
from tempest.lib.common import api_version_utils
from tempest.lib.common.utils import data_utils
from tempest.lib import exceptions as lib_exc
from tempest import test
from zun_tempest_plugin.tests.tempest.api import api_microversion_fixture
@ -74,7 +76,14 @@ class BaseZunTest(api_version_utils.BaseMicroversionTest,
@classmethod
def clear_credentials(cls):
cls.cleanup_network()
try:
clients.set_container_service_api_microversion(
cls.request_microversion)
cls.cleanup_network()
except lib_exc.NotFound:
LOG.exception("Error on network cleanup.")
finally:
clients.reset_container_service_api_microversion()
super(BaseZunTest, cls).clear_credentials()
@classmethod
@ -85,12 +94,17 @@ class BaseZunTest(api_version_utils.BaseMicroversionTest,
if not network:
return
docker_url = 'tcp://localhost:2375'
networks = cls.docker_client.list_networks(
network['id'], docker_auth_url=docker_url)
for network in networks:
cls.docker_client.remove_network(
network['Id'], docker_auth_url=docker_url)
req_version = api_version_request.APIVersionRequest(
cls.request_microversion)
if req_version >= api_version_request.APIVersionRequest('1.27'):
cls.os_admin.container_client.delete_network(network['id'])
else:
docker_url = 'tcp://localhost:2375'
networks = cls.docker_client.list_networks(
network['id'], docker_auth_url=docker_url)
for network in networks:
cls.docker_client.remove_network(
network['Id'], docker_auth_url=docker_url)
def setUp(self):
super(BaseZunTest, self).setUp()