Replaces calls to traceback.format_exc()
* this change replaces occurrences of `traceback.format_exc()` with the appropriate version of `LOG.exception()` in fuel-ostf * removes importing `traceback` module. * incorporated review comments from fuel-dev team Change-Id: I7055aeafdcb109bd3566f118379196ea6ca6037d Closes-Bug: #1457397 Signed-off-by: Anil Belur <askb23@gmail.com>
This commit is contained in:
parent
4b340ef334
commit
2fc84886ce
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
import neutronclient.common.exceptions as neutron_exc
|
import neutronclient.common.exceptions as neutron_exc
|
||||||
|
|
||||||
|
@ -474,7 +473,7 @@ class CeilometerBaseTest(fuel_health.nmanager.PlatformServicesBaseClass):
|
||||||
try:
|
try:
|
||||||
method(resource)
|
method(resource)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
|
|
|
@ -22,7 +22,6 @@ sys.path.append(path)
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import requests
|
import requests
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health import exceptions
|
from fuel_health import exceptions
|
||||||
import fuel_health.nmanager
|
import fuel_health.nmanager
|
||||||
|
@ -88,7 +87,7 @@ def cleanup(cluster_deployment_info):
|
||||||
' group template deletion',
|
' group template deletion',
|
||||||
delete_type='id')
|
delete_type='id')
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception('Failed sahara cluster cleanup')
|
||||||
|
|
||||||
if 'murano' in cluster_deployment_info:
|
if 'murano' in cluster_deployment_info:
|
||||||
try:
|
try:
|
||||||
|
@ -108,8 +107,8 @@ def cleanup(cluster_deployment_info):
|
||||||
requests.delete('{0}environments/{1}'.format(
|
requests.delete('{0}environments/{1}'.format(
|
||||||
endpoint, e['id']), headers=headers)
|
endpoint, e['id']), headers=headers)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning('Failed to delete murano environment')
|
LOG.exception('Failed to delete murano \
|
||||||
LOG.debug(traceback.format_exc())
|
environment')
|
||||||
|
|
||||||
if compute_client is not None:
|
if compute_client is not None:
|
||||||
flavors = compute_client.flavors.list()
|
flavors = compute_client.flavors.list()
|
||||||
|
@ -119,11 +118,10 @@ def cleanup(cluster_deployment_info):
|
||||||
LOG.info('Start flavor deletion.')
|
LOG.info('Start flavor deletion.')
|
||||||
compute_client.flavors.delete(flavor.id)
|
compute_client.flavors.delete(flavor.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning('Failed to delete flavor')
|
LOG.exception('Failed to delete flavor')
|
||||||
LOG.debug(traceback.format_exc())
|
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception('Failed murano cluster cleanup')
|
||||||
|
|
||||||
if 'ceilometer' in cluster_deployment_info:
|
if 'ceilometer' in cluster_deployment_info:
|
||||||
try:
|
try:
|
||||||
|
@ -152,9 +150,9 @@ def cleanup(cluster_deployment_info):
|
||||||
LOG.info('Start stacks deletion.')
|
LOG.info('Start stacks deletion.')
|
||||||
heat_client.stacks.delete(s.id)
|
heat_client.stacks.delete(s.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failed stacks deletion')
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception('Failed during heat cluster deletion')
|
||||||
|
|
||||||
if 'ironic' in cluster_deployment_info:
|
if 'ironic' in cluster_deployment_info:
|
||||||
try:
|
try:
|
||||||
|
@ -187,12 +185,12 @@ def cleanup(cluster_deployment_info):
|
||||||
manager._get_compute_client().floating_ips.delete(
|
manager._get_compute_client().floating_ips.delete(
|
||||||
f.id)
|
f.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failed during floating ip delete')
|
||||||
try:
|
try:
|
||||||
LOG.info('Delete server with name {0}'.format(s.name))
|
LOG.info('Delete server with name {0}'.format(s.name))
|
||||||
manager._get_compute_client().servers.delete(s.id)
|
manager._get_compute_client().servers.delete(s.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
else:
|
else:
|
||||||
LOG.info('No servers found')
|
LOG.info('No servers found')
|
||||||
|
|
||||||
|
@ -201,7 +199,7 @@ def cleanup(cluster_deployment_info):
|
||||||
LOG.info('Wait for server terminations')
|
LOG.info('Wait for server terminations')
|
||||||
manager.wait_for_server_termination(s)
|
manager.wait_for_server_termination(s)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failure on waiting for server termination')
|
||||||
|
|
||||||
_delete_it(manager._get_compute_client().keypairs,
|
_delete_it(manager._get_compute_client().keypairs,
|
||||||
'Start keypair deletion')
|
'Start keypair deletion')
|
||||||
|
@ -234,12 +232,12 @@ def _delete_it(client, log_message, name='ost1_test-', delete_type='name'):
|
||||||
else:
|
else:
|
||||||
client.delete(item.id)
|
client.delete(item.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
if item.display_name.startswith(name):
|
if item.display_name.startswith(name):
|
||||||
client.delete(item)
|
client.delete(item)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -48,5 +47,5 @@ class CloudValidationTest(nmanager.OfficialClientTest):
|
||||||
key_filename=self.key, timeout=self.timeout)
|
key_filename=self.key, timeout=self.timeout)
|
||||||
return sshclient.exec_longrun_command(cmd)
|
return sshclient.exec_longrun_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failure on ssh run cmd')
|
||||||
self.fail("%s command failed." % cmd)
|
self.fail("%s command failed." % cmd)
|
||||||
|
|
|
@ -20,7 +20,6 @@ import os
|
||||||
import select
|
import select
|
||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
@ -118,7 +117,7 @@ class Client(object):
|
||||||
_timed_out = self._is_timed_out(self.timeout, _start_time)
|
_timed_out = self._is_timed_out(self.timeout, _start_time)
|
||||||
ssh.close()
|
ssh.close()
|
||||||
except (EOFError, paramiko.AuthenticationException, socket.error):
|
except (EOFError, paramiko.AuthenticationException, socket.error):
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Closed on connecting to server')
|
||||||
return
|
return
|
||||||
|
|
||||||
def exec_command(self, command):
|
def exec_command(self, command):
|
||||||
|
@ -172,7 +171,7 @@ class Client(object):
|
||||||
connection = self._get_ssh_connection()
|
connection = self._get_ssh_connection()
|
||||||
connection.close()
|
connection.close()
|
||||||
except paramiko.AuthenticationException:
|
except paramiko.AuthenticationException:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import signal
|
import signal
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common import log as logging
|
from fuel_health.common import log as logging
|
||||||
|
|
||||||
|
@ -176,7 +175,7 @@ class FuelTestAssertMixin(object):
|
||||||
with timeout(secs, action):
|
with timeout(secs, action):
|
||||||
result = func(*args, **kwargs)
|
result = func(*args, **kwargs)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
if type(exc) is AssertionError:
|
if type(exc) is AssertionError:
|
||||||
msg = str(exc)
|
msg = str(exc)
|
||||||
self.fail("Step %s failed: " % step + msg +
|
self.fail("Step %s failed: " % step + msg +
|
||||||
|
|
|
@ -19,7 +19,6 @@ from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
import unittest2
|
import unittest2
|
||||||
|
|
||||||
import keystoneclient
|
import keystoneclient
|
||||||
|
@ -610,8 +609,7 @@ class NailgunConfig(object):
|
||||||
except exceptions.SetProxy as exc:
|
except exceptions.SetProxy as exc:
|
||||||
raise exc
|
raise exc
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning('Something wrong with endpoints')
|
LOG.exception('Something wrong with endpoints')
|
||||||
LOG.debug(traceback.format_exc())
|
|
||||||
|
|
||||||
def _parse_cluster_attributes(self):
|
def _parse_cluster_attributes(self):
|
||||||
api_url = '/api/clusters/%s/attributes' % self.cluster_id
|
api_url = '/api/clusters/%s/attributes' % self.cluster_id
|
||||||
|
@ -844,11 +842,9 @@ class NailgunConfig(object):
|
||||||
else:
|
else:
|
||||||
online_proxies.append({'ip': proxy_ip,
|
online_proxies.append({'ip': proxy_ip,
|
||||||
'auth_passed': False})
|
'auth_passed': False})
|
||||||
except Exception as e:
|
except Exception:
|
||||||
LOG.warning('Can not connect to Keystone '
|
LOG.exception('Can not connect to Keystone with proxy \
|
||||||
'with proxy on {0}, error: {1}'
|
on {0}'.format(proxy_ip))
|
||||||
.format(proxy_ip, e))
|
|
||||||
LOG.debug(traceback.format_exc())
|
|
||||||
return online_proxies
|
return online_proxies
|
||||||
|
|
||||||
def set_proxy(self):
|
def set_proxy(self):
|
||||||
|
@ -887,7 +883,8 @@ class NailgunConfig(object):
|
||||||
'{0}, public vip is {1}'.format(management_vip, public_vip))
|
'{0}, public vip is {1}'.format(management_vip, public_vip))
|
||||||
else:
|
else:
|
||||||
public_vip = self.network.raw_data.get('public_vip', None)
|
public_vip = self.network.raw_data.get('public_vip', None)
|
||||||
#management_vip = self.network.raw_data.get('management_vip', None)
|
# management_vip = self.network.raw_data.get('management_vip',
|
||||||
|
# None)
|
||||||
|
|
||||||
# workaround for api without management_vip for ha mode
|
# workaround for api without management_vip for ha mode
|
||||||
if not keystone_vip and 'ha' in self.mode:
|
if not keystone_vip and 'ha' in self.mode:
|
||||||
|
|
|
@ -16,7 +16,6 @@ from distutils import version
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
import traceback
|
|
||||||
|
|
||||||
import fuel_health
|
import fuel_health
|
||||||
from fuel_health.common import ssh
|
from fuel_health.common import ssh
|
||||||
|
@ -198,7 +197,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
return json.loads(res.strip())
|
return json.loads(res.strip())
|
||||||
return res.strip()
|
return res.strip()
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Fail to get data from Hiera DB!")
|
||||||
self.fail("Fail to get data from Hiera DB!")
|
self.fail("Fail to get data from Hiera DB!")
|
||||||
|
|
||||||
def get_conf_values(self, variable="rabbit_password",
|
def get_conf_values(self, variable="rabbit_password",
|
||||||
|
@ -216,7 +215,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
LOG.debug("result is {0}".format(res))
|
LOG.debug("result is {0}".format(res))
|
||||||
return res
|
return res
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Fail to get data from config")
|
||||||
self.fail("Fail to get data from config")
|
self.fail("Fail to get data from config")
|
||||||
|
|
||||||
def get_amqp_hosts(self):
|
def get_amqp_hosts(self):
|
||||||
|
@ -244,7 +243,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
LOG.debug('Checking AMQP host "{0}"...'.format(ip))
|
LOG.debug('Checking AMQP host "{0}"...'.format(ip))
|
||||||
remote.exec_command(cmd)
|
remote.exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed to establish AMQP connection")
|
||||||
self.fail("Failed to establish AMQP connection to {1}/tcp "
|
self.fail("Failed to establish AMQP connection to {1}/tcp "
|
||||||
"port on {0} from controller node!".format(ip, port))
|
"port on {0} from controller node!".format(ip, port))
|
||||||
|
|
||||||
|
@ -270,7 +269,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
self.queues.append(test_queue)
|
self.queues.append(test_queue)
|
||||||
remote.exec_command(cmd)
|
remote.exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed to declare queue on host")
|
||||||
self.fail("Failed to declare queue on host {0}".format(ip))
|
self.fail("Failed to declare queue on host {0}".format(ip))
|
||||||
|
|
||||||
def publish_message(self):
|
def publish_message(self):
|
||||||
|
@ -295,7 +294,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
LOG.debug('Try to publish message {0}'.format(id))
|
LOG.debug('Try to publish message {0}'.format(id))
|
||||||
remote.exec_command(cmd)
|
remote.exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed to publish message!")
|
||||||
self.fail("Failed to publish message!")
|
self.fail("Failed to publish message!")
|
||||||
self.messages.append({'queue': test_queue, 'id': id})
|
self.messages.append({'queue': test_queue, 'id': id})
|
||||||
|
|
||||||
|
@ -321,7 +320,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
'replicated over the cluster...'.format(id))
|
'replicated over the cluster...'.format(id))
|
||||||
remote.exec_command(cmd)
|
remote.exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failed to check message replication!')
|
||||||
self.fail('Failed to check message replication!')
|
self.fail('Failed to check message replication!')
|
||||||
self.messages.remove(message)
|
self.messages.remove(message)
|
||||||
break
|
break
|
||||||
|
@ -347,7 +346,7 @@ class RabbitSanityClass(BaseTestCase):
|
||||||
remote.exec_command(cmd)
|
remote.exec_command(cmd)
|
||||||
self.queues.remove(test_queue)
|
self.queues.remove(test_queue)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failed to delete queue')
|
||||||
self.fail('Failed to delete queue "{0}"!'.format(test_queue))
|
self.fail('Failed to delete queue "{0}"!'.format(test_queue))
|
||||||
|
|
||||||
|
|
||||||
|
@ -386,7 +385,7 @@ class TestPacemakerBase(BaseTestCase):
|
||||||
timeout=self.timeout)
|
timeout=self.timeout)
|
||||||
return sshclient.exec_longrun_command(cmd)
|
return sshclient.exec_longrun_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed on run ssh cmd")
|
||||||
self.fail("%s command failed." % cmd)
|
self.fail("%s command failed." % cmd)
|
||||||
|
|
||||||
def _register_resource(self, res, res_name, resources):
|
def _register_resource(self, res, res_name, resources):
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
import fuel_health.test
|
import fuel_health.test
|
||||||
|
@ -52,7 +51,7 @@ class IronicTest(nmanager.SanityChecksTest):
|
||||||
try:
|
try:
|
||||||
self.ironic_client.node.delete(node.uuid)
|
self.ironic_client.node.delete(node.uuid)
|
||||||
except ironic_exc.NotFound:
|
except ironic_exc.NotFound:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception('Failed on node delete {0}'.format(node.uuid))
|
||||||
|
|
||||||
def node_update(self, node, prop, value_prop, row='properties'):
|
def node_update(self, node, prop, value_prop, row='properties'):
|
||||||
"""Add property with value to node properties."""
|
"""Add property with value to node properties."""
|
||||||
|
|
|
@ -17,7 +17,6 @@ import contextlib
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -82,13 +81,15 @@ class MuranoTest(fuel_health.nmanager.PlatformServicesBaseClass):
|
||||||
try:
|
try:
|
||||||
self.delete_environment(environment_id)
|
self.delete_environment(environment_id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception('Failure to delete environment \
|
||||||
|
{0}'.format(environment_id))
|
||||||
if self.packages:
|
if self.packages:
|
||||||
for package in self.packages:
|
for package in self.packages:
|
||||||
try:
|
try:
|
||||||
self.delete_package(package.id)
|
self.delete_package(package.id)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.warning(traceback.format_exc())
|
LOG.exception('Failure to delete package \
|
||||||
|
{0}'.format(package.id))
|
||||||
|
|
||||||
super(MuranoTest, self).tearDown()
|
super(MuranoTest, self).tearDown()
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
import fuel_health.nmanager
|
import fuel_health.nmanager
|
||||||
|
|
||||||
|
@ -125,7 +124,7 @@ class NeutronBaseTest(fuel_health.nmanager.NovaNetworkScenarioTest):
|
||||||
cls.compute_client.floating_ips.delete(ip)
|
cls.compute_client.floating_ips.delete(ip)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _clear_networks(cls):
|
def _clear_networks(cls):
|
||||||
|
@ -135,7 +134,7 @@ class NeutronBaseTest(fuel_health.nmanager.NovaNetworkScenarioTest):
|
||||||
if 'ost1_' in srv.name]
|
if 'ost1_' in srv.name]
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
for router in cls.routers:
|
for router in cls.routers:
|
||||||
try:
|
try:
|
||||||
cls.neutron_client.remove_gateway_router(
|
cls.neutron_client.remove_gateway_router(
|
||||||
|
@ -147,21 +146,21 @@ class NeutronBaseTest(fuel_health.nmanager.NovaNetworkScenarioTest):
|
||||||
cls.neutron_client.delete_router(router)
|
cls.neutron_client.delete_router(router)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
for subnet in cls.subnets:
|
for subnet in cls.subnets:
|
||||||
try:
|
try:
|
||||||
cls.neutron_client.delete_subnet(subnet['id'])
|
cls.neutron_client.delete_subnet(subnet['id'])
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
for network in cls.networks:
|
for network in cls.networks:
|
||||||
try:
|
try:
|
||||||
cls.neutron_client.delete_network(network['id'])
|
cls.neutron_client.delete_network(network['id'])
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sec_groups = cls.compute_client.security_groups.list()
|
sec_groups = cls.compute_client.security_groups.list()
|
||||||
|
@ -170,7 +169,7 @@ class NeutronBaseTest(fuel_health.nmanager.NovaNetworkScenarioTest):
|
||||||
if 'ost1_test-secgroup-smoke' in group.name]
|
if 'ost1_test-secgroup-smoke' in group.name]
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
|
|
||||||
import fuel_health.common.utils.data_utils as data_utils
|
import fuel_health.common.utils.data_utils as data_utils
|
||||||
|
|
||||||
|
@ -27,32 +26,37 @@ LOG = logging.getLogger(__name__)
|
||||||
try:
|
try:
|
||||||
import heatclient.v1.client
|
import heatclient.v1.client
|
||||||
except Exception:
|
except Exception:
|
||||||
|
LOG.exception()
|
||||||
LOG.warning('Heatclient could not be imported.')
|
LOG.warning('Heatclient could not be imported.')
|
||||||
try:
|
try:
|
||||||
import muranoclient.v1.client
|
import muranoclient.v1.client
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
LOG.warning('Muranoclient could not be imported.')
|
LOG.warning('Muranoclient could not be imported.')
|
||||||
try:
|
try:
|
||||||
import saharaclient.client
|
import saharaclient.client
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
LOG.warning('Sahara client could not be imported.')
|
LOG.warning('Sahara client could not be imported.')
|
||||||
try:
|
try:
|
||||||
import ceilometerclient.v2.client
|
import ceilometerclient.v2.client
|
||||||
except Exception:
|
except Exception:
|
||||||
|
LOG.exception()
|
||||||
LOG.warning('Ceilometer client could not be imported.')
|
LOG.warning('Ceilometer client could not be imported.')
|
||||||
try:
|
try:
|
||||||
import neutronclient.neutron.client
|
import neutronclient.neutron.client
|
||||||
except Exception:
|
except Exception:
|
||||||
|
LOG.exception()
|
||||||
LOG.warning('Neutron client could not be imported.')
|
LOG.warning('Neutron client could not be imported.')
|
||||||
try:
|
try:
|
||||||
import glanceclient
|
import glanceclient
|
||||||
except Exception:
|
except Exception:
|
||||||
|
LOG.exception()
|
||||||
LOG.warning('Glance client could not be imported')
|
LOG.warning('Glance client could not be imported')
|
||||||
try:
|
try:
|
||||||
import ironicclient
|
import ironicclient
|
||||||
except Exception:
|
except Exception:
|
||||||
|
LOG.exception()
|
||||||
LOG.warning('Ironic client could not be imported')
|
LOG.warning('Ironic client could not be imported')
|
||||||
|
|
||||||
import aodhclient.client
|
import aodhclient.client
|
||||||
|
@ -99,8 +103,7 @@ class OfficialClientManager(fuel_health.manager.Manager):
|
||||||
"Unexpected error durring intialize keystoneclient: {0}"
|
"Unexpected error durring intialize keystoneclient: {0}"
|
||||||
.format(e)
|
.format(e)
|
||||||
)
|
)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Unexpected error durring intialize keystoneclient")
|
||||||
self.traceback = traceback.format_exc()
|
|
||||||
|
|
||||||
if self.clients_initialized:
|
if self.clients_initialized:
|
||||||
self.glance_client = self._get_glance_client()
|
self.glance_client = self._get_glance_client()
|
||||||
|
@ -423,10 +426,10 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
def is_deletion_complete():
|
def is_deletion_complete():
|
||||||
try:
|
try:
|
||||||
server.get()
|
server.get()
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
if e.__class__.__name__ == 'NotFound':
|
if exc.__class__.__name__ == 'NotFound':
|
||||||
return True
|
return True
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
fuel_health.test.call_until_true(
|
fuel_health.test.call_until_true(
|
||||||
|
@ -445,9 +448,7 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
else:
|
else:
|
||||||
return result
|
return result
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.debug("%s. Another effort needed." % exc)
|
||||||
LOG.debug("%s. Another"
|
|
||||||
" effort needed." % exc)
|
|
||||||
time.sleep(timeout)
|
time.sleep(timeout)
|
||||||
if 'ping' not in kwargs.get('command'):
|
if 'ping' not in kwargs.get('command'):
|
||||||
self.fail('Execution command on Instance fails '
|
self.fail('Execution command on Instance fails '
|
||||||
|
@ -485,7 +486,7 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
.format(image=self.manager.config.compute.image_name)
|
.format(image=self.manager.config.compute.image_name)
|
||||||
)
|
)
|
||||||
except nova_exc.ClientException:
|
except nova_exc.ClientException:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail("Image can not be retrieved. "
|
self.fail("Image can not be retrieved. "
|
||||||
"Please refer to OpenStack logs for more details")
|
"Please refer to OpenStack logs for more details")
|
||||||
|
|
||||||
|
@ -497,7 +498,7 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
cls.compute_client.flavors.delete(flavor)
|
cls.compute_client.flavors.delete(flavor)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _clean_images(cls):
|
def _clean_images(cls):
|
||||||
|
@ -507,7 +508,7 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
cls.glance_client.images.delete(image_id)
|
cls.glance_client.images.delete(image_id)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
|
@ -521,12 +522,12 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
# OpenStack resources are assumed to have a delete()
|
# OpenStack resources are assumed to have a delete()
|
||||||
# method which destroys the resource...
|
# method which destroys the resource...
|
||||||
thing.delete()
|
thing.delete()
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
# If the resource is already missing, mission accomplished.
|
# If the resource is already missing, mission accomplished.
|
||||||
if e.__class__.__name__ == 'NotFound':
|
if exc.__class__.__name__ == 'NotFound':
|
||||||
continue
|
continue
|
||||||
cls.error_msg.append(e)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
def is_deletion_complete():
|
def is_deletion_complete():
|
||||||
# Deletion testing is only required for objects whose
|
# Deletion testing is only required for objects whose
|
||||||
|
@ -535,13 +536,13 @@ class OfficialClientTest(fuel_health.test.TestCase):
|
||||||
return True
|
return True
|
||||||
try:
|
try:
|
||||||
thing.get()
|
thing.get()
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
# Clients are expected to return an exception
|
# Clients are expected to return an exception
|
||||||
# called 'NotFound' if retrieval fails.
|
# called 'NotFound' if retrieval fails.
|
||||||
if e.__class__.__name__ == 'NotFound':
|
if exc.__class__.__name__ == 'NotFound':
|
||||||
return True
|
return True
|
||||||
cls.error_msg.append(e)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Block until resource deletion has completed or timed-out
|
# Block until resource deletion has completed or timed-out
|
||||||
|
@ -586,7 +587,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
key_filename=self.key, timeout=self.timeout)
|
key_filename=self.key, timeout=self.timeout)
|
||||||
return sshclient.exec_longrun_command(cmd)
|
return sshclient.exec_longrun_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail("%s command failed." % cmd)
|
self.fail("%s command failed." % cmd)
|
||||||
|
|
||||||
def _create_keypair(self, client, namestart='ost1_test-keypair-smoke-'):
|
def _create_keypair(self, client, namestart='ost1_test-keypair-smoke-'):
|
||||||
|
@ -637,7 +638,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
try:
|
try:
|
||||||
client.security_group_rules.create(secgroup.id, **ruleset)
|
client.security_group_rules.create(secgroup.id, **ruleset)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail("Failed to create rule in security group.")
|
self.fail("Failed to create rule in security group.")
|
||||||
|
|
||||||
return secgroup
|
return secgroup
|
||||||
|
@ -661,7 +662,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
cls.compute_client.networks.delete(net)
|
cls.compute_client.networks.delete(net)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _clear_security_groups(cls):
|
def _clear_security_groups(cls):
|
||||||
|
@ -672,7 +673,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
if 'ost1_test-' in group.name]
|
if 'ost1_test-' in group.name]
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
def _list_networks(self):
|
def _list_networks(self):
|
||||||
nets = self.compute_client.networks.list()
|
nets = self.compute_client.networks.list()
|
||||||
|
@ -755,7 +756,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
try:
|
try:
|
||||||
client.servers.add_floating_ip(server, floating_ip)
|
client.servers.add_floating_ip(server, floating_ip)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail('Can not assign floating ip to instance')
|
self.fail('Can not assign floating ip to instance')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -768,7 +769,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
cls.compute_client.floating_ips.delete(ip)
|
cls.compute_client.floating_ips.delete(ip)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
cls.error_msg.append(exc)
|
cls.error_msg.append(exc)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(exc)
|
||||||
|
|
||||||
def _ping_ip_address(self, ip_address, timeout, retries):
|
def _ping_ip_address(self, ip_address, timeout, retries):
|
||||||
def ping():
|
def ping():
|
||||||
|
@ -781,7 +782,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
key_filename=self.key,
|
key_filename=self.key,
|
||||||
timeout=timeout)
|
timeout=timeout)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
|
|
||||||
return self.retry_command(retries=retries[0],
|
return self.retry_command(retries=retries[0],
|
||||||
timeout=retries[1],
|
timeout=retries[1],
|
||||||
|
@ -812,7 +813,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
timeout=timeout)
|
timeout=timeout)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
|
|
||||||
command = "ping -q -c1 -w10 8.8.8.8"
|
command = "ping -q -c1 -w10 8.8.8.8"
|
||||||
|
|
||||||
|
@ -843,7 +844,7 @@ class NovaNetworkScenarioTest(OfficialClientTest):
|
||||||
LOG.debug('Host is {0}'.format(host))
|
LOG.debug('Host is {0}'.format(host))
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
|
|
||||||
return self.retry_command(retries[0], retries[1],
|
return self.retry_command(retries[0], retries[1],
|
||||||
ssh.exec_command_on_vm,
|
ssh.exec_command_on_vm,
|
||||||
|
@ -1418,5 +1419,4 @@ class SmokeChecksTest(OfficialClientTest):
|
||||||
try:
|
try:
|
||||||
cls.compute_client.flavors.delete(cls.created_flavors)
|
cls.compute_client.flavors.delete(cls.created_flavors)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug("OSTF test flavor cannot be deleted.")
|
LOG.exception("OSTF test flavor cannot be deleted.")
|
||||||
LOG.debug(traceback.format_exc())
|
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
|
|
||||||
import testresources
|
import testresources
|
||||||
import unittest2
|
import unittest2
|
||||||
|
@ -142,5 +141,5 @@ class TestCase(BaseTestCase):
|
||||||
key_filename=self.key, timeout=self.timeout)
|
key_filename=self.key, timeout=self.timeout)
|
||||||
return sshclient.exec_command(cmd)
|
return sshclient.exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed while opening ssh session with host")
|
||||||
self.fail("{0} command failed.".format(cmd))
|
self.fail("{0} command failed.".format(cmd))
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.ssh import Client as SSHClient
|
from fuel_health.common.ssh import Client as SSHClient
|
||||||
from fuel_health.common.utils import data_utils
|
from fuel_health.common.utils import data_utils
|
||||||
|
@ -42,7 +41,7 @@ class TestMysqlReplication(BaseMysqlTest):
|
||||||
SSHClient(cls.master_ip, cls.node_user,
|
SSHClient(cls.master_ip, cls.node_user,
|
||||||
key_filename=cls.node_key).exec_command(cmd)
|
key_filename=cls.node_key).exec_command(cmd)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Failed to connect to mysql cmd:{0}".format(cmd))
|
||||||
|
|
||||||
def test_mysql_replication(self):
|
def test_mysql_replication(self):
|
||||||
"""Check data replication over mysql
|
"""Check data replication over mysql
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.ssh import Client as SSHClient
|
from fuel_health.common.ssh import Client as SSHClient
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -76,7 +75,7 @@ class SanityInfrastructureTest(nmanager.SanityChecksTest):
|
||||||
'have not been started.')
|
'have not been started.')
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.info("Will sleep for 120 seconds and try again")
|
LOG.info("Will sleep for 120 seconds and try again")
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
time.sleep(120)
|
time.sleep(120)
|
||||||
self.verify_response_true(
|
self.verify_response_true(
|
||||||
downstate not in output, 'Step 2 failed: Some nova services '
|
downstate not in output, 'Step 2 failed: Some nova services '
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.utils.data_utils import rand_name
|
from fuel_health.common.utils.data_utils import rand_name
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -60,8 +59,8 @@ class TestInstanceLiveMigration(nmanager.NovaNetworkScenarioTest):
|
||||||
self._delete_server(server)
|
self._delete_server(server)
|
||||||
self.servers.remove(server)
|
self.servers.remove(server)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Server {0} already \
|
||||||
LOG.debug("Server was already deleted.")
|
deleted.".format(server))
|
||||||
|
|
||||||
def test_001_live_migration(self):
|
def test_001_live_migration(self):
|
||||||
"""Instance live migration
|
"""Instance live migration
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.utils.data_utils import rand_name
|
from fuel_health.common.utils.data_utils import rand_name
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -62,8 +61,8 @@ class TestNovaNetwork(nmanager.NovaNetworkScenarioTest):
|
||||||
self._delete_server(server)
|
self._delete_server(server)
|
||||||
self.servers.remove(server)
|
self.servers.remove(server)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Server {0} was already \
|
||||||
LOG.debug("Server was already deleted.")
|
deleted.".format(server))
|
||||||
|
|
||||||
def test_001_create_keypairs(self):
|
def test_001_create_keypairs(self):
|
||||||
"""Create keypair
|
"""Create keypair
|
||||||
|
@ -278,7 +277,7 @@ class TestNovaNetwork(nmanager.NovaNetworkScenarioTest):
|
||||||
else:
|
else:
|
||||||
compute = None
|
compute = None
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Unable to get instance details")
|
||||||
self.fail("Step 3 failed: cannot get instance details. "
|
self.fail("Step 3 failed: cannot get instance details. "
|
||||||
"Please refer to OpenStack logs for more details.")
|
"Please refer to OpenStack logs for more details.")
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.utils.data_utils import rand_name
|
from fuel_health.common.utils.data_utils import rand_name
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -71,7 +70,7 @@ class TestImageAction(nmanager.SmokeChecksTest):
|
||||||
if e.__class__.__name__ == 'NotFound':
|
if e.__class__.__name__ == 'NotFound':
|
||||||
return True
|
return True
|
||||||
self.error_msg.append(e)
|
self.error_msg.append(e)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception(e)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Block until resource deletion has completed or timed-out
|
# Block until resource deletion has completed or timed-out
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -132,6 +130,6 @@ class TestUserTenantRole(nmanager.SmokeChecksTest):
|
||||||
"logs for more details.",
|
"logs for more details.",
|
||||||
failed_step=9)
|
failed_step=9)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail("Step 10 failed: Can not authenticate in Horizon. "
|
self.fail("Step 10 failed: Can not authenticate in Horizon. "
|
||||||
"Please refer to OpenStack logs for more details.")
|
"Please refer to OpenStack logs for more details.")
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
|
|
||||||
from fuel_health.common.utils.data_utils import rand_name
|
from fuel_health.common.utils.data_utils import rand_name
|
||||||
from fuel_health import nmanager
|
from fuel_health import nmanager
|
||||||
|
@ -57,8 +56,7 @@ class TestVcenter(nmanager.NovaNetworkScenarioTest):
|
||||||
self._delete_server(server)
|
self._delete_server(server)
|
||||||
self.servers.remove(server)
|
self.servers.remove(server)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception("Server was already deleted.")
|
||||||
LOG.debug("Server was already deleted.")
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def find_flavor_id(cls):
|
def find_flavor_id(cls):
|
||||||
|
@ -231,7 +229,7 @@ class TestVcenter(nmanager.NovaNetworkScenarioTest):
|
||||||
if addr.startswith('novanetwork'):
|
if addr.startswith('novanetwork'):
|
||||||
instance_ip = server.addresses[addr][0]['addr']
|
instance_ip = server.addresses[addr][0]['addr']
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
self.fail("Step 3 failed: cannot get instance details. "
|
self.fail("Step 3 failed: cannot get instance details. "
|
||||||
"Please refer to OpenStack logs for more details.")
|
"Please refer to OpenStack logs for more details.")
|
||||||
|
|
||||||
|
@ -289,7 +287,7 @@ class TestVcenterImageAction(nmanager.SmokeChecksTest):
|
||||||
if e.__class__.__name__ == 'NotFound':
|
if e.__class__.__name__ == 'NotFound':
|
||||||
return True
|
return True
|
||||||
self.error_msg.append(e)
|
self.error_msg.append(e)
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.exception()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Block until resource deletion has completed or timed-out
|
# Block until resource deletion has completed or timed-out
|
||||||
|
|
Loading…
Reference in New Issue