Enable debug logging for Nova, Glance, Cinder requests
Currently requests to these services are not logged with debug=True config option by default. This makes debugging difficult. Also set default log level for keystoneclient.auth to WARN, because it floods logs with useless info. Change-Id: Idfe2684b4146bb3c44159a08572e3c0eeff85f5f
This commit is contained in:
parent
f7fbf1424f
commit
b1429ae195
@ -73,7 +73,7 @@ def nova(context):
|
||||
return nova(context)
|
||||
try:
|
||||
return novaclient.Client(_novaclient_vertion, bypass_url=bypass_url,
|
||||
**args)
|
||||
http_log_debug=CONF.debug, **args)
|
||||
except nova_exception.UnsupportedVersion:
|
||||
if _novaclient_vertion == '2':
|
||||
raise
|
||||
@ -125,7 +125,7 @@ def cinder(context):
|
||||
'api_key': None,
|
||||
}
|
||||
|
||||
_cinder = cinderclient.Client('1', **args)
|
||||
_cinder = cinderclient.Client('1', http_log_debug=CONF.debug, **args)
|
||||
management_url = _url_for(context, service_type='volume')
|
||||
_cinder.client.auth_token = context.auth_token
|
||||
_cinder.client.management_url = management_url
|
||||
|
@ -30,7 +30,7 @@ _DEFAULT_LOG_LEVELS = ['amqp=WARN', 'amqplib=WARN', 'boto=WARN',
|
||||
'requests.packages.urllib3.connectionpool=WARN',
|
||||
'urllib3.connectionpool=WARN', 'websocket=WARN',
|
||||
'keystonemiddleware=WARN', 'routes.middleware=WARN',
|
||||
'stevedore=WARN', 'glanceclient=WARN']
|
||||
'stevedore=WARN', 'keystoneclient.auth=WARN']
|
||||
|
||||
_DEFAULT_LOGGING_CONTEXT_FORMAT = ('%(asctime)s.%(msecs)03d %(process)d '
|
||||
'%(levelname)s %(name)s [%(request_id)s '
|
||||
|
@ -15,19 +15,16 @@
|
||||
import fixtures
|
||||
import mock
|
||||
from novaclient import exceptions as nova_exception
|
||||
from oslo_config import fixture as config_fixture
|
||||
from oslotest import base as test_base
|
||||
|
||||
from ec2api.api import clients
|
||||
from ec2api.tests.unit import base
|
||||
|
||||
|
||||
class ClientsTestCase(test_base.BaseTestCase):
|
||||
class ClientsTestCase(base.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(ClientsTestCase, self).setUp()
|
||||
|
||||
conf = self.useFixture(config_fixture.Config())
|
||||
conf.config(keystone_url='keystone_url')
|
||||
self.configure(keystone_url='keystone_url')
|
||||
|
||||
@mock.patch('novaclient.client.Client')
|
||||
def test_nova(self, nova):
|
||||
@ -42,18 +39,27 @@ class ClientsTestCase(test_base.BaseTestCase):
|
||||
res = clients.nova(context)
|
||||
self.assertEqual(nova.return_value, res)
|
||||
nova.assert_called_with(
|
||||
'2.3', bypass_url='novav21_url',
|
||||
'2.3', bypass_url='novav21_url', http_log_debug=False,
|
||||
auth_url='keystone_url', auth_token='fake_token',
|
||||
username=None, api_key=None, project_id=None)
|
||||
self.assertEqual(0, len(logs.output))
|
||||
|
||||
# test logging with debug option
|
||||
self.configure(debug=True)
|
||||
clients.nova(context)
|
||||
nova.assert_called_with(
|
||||
'2.3', bypass_url='novav21_url', http_log_debug=True,
|
||||
auth_url='keystone_url', auth_token='fake_token',
|
||||
username=None, api_key=None, project_id=None)
|
||||
self.configure(debug=False)
|
||||
|
||||
# test switching to v2 client
|
||||
nova.side_effect = [nova_exception.UnsupportedVersion(), 'v2_client']
|
||||
with fixtures.LoggerFixture() as logs:
|
||||
res = clients.nova(context)
|
||||
self.assertEqual('v2_client', res)
|
||||
nova.assert_called_with(
|
||||
'2', bypass_url='novav21_url',
|
||||
'2', bypass_url='novav21_url', http_log_debug=False,
|
||||
auth_url='keystone_url', auth_token='fake_token',
|
||||
username=None, api_key=None, project_id=None)
|
||||
self.assertNotEqual(0, len(logs.output))
|
||||
@ -72,7 +78,7 @@ class ClientsTestCase(test_base.BaseTestCase):
|
||||
with fixtures.LoggerFixture() as logs:
|
||||
res = clients.nova(context)
|
||||
nova.assert_called_with(
|
||||
'2.3', bypass_url='nova_url',
|
||||
'2.3', bypass_url='nova_url', http_log_debug=False,
|
||||
auth_url='keystone_url', auth_token='fake_token',
|
||||
username=None, api_key=None, project_id=None)
|
||||
self.assertNotEqual(0, len(logs.output))
|
||||
@ -81,7 +87,7 @@ class ClientsTestCase(test_base.BaseTestCase):
|
||||
context.service_catalog = [{'type': 'fake'}]
|
||||
clients.nova(context)
|
||||
nova.assert_called_with(
|
||||
'2.3', bypass_url=None,
|
||||
'2.3', bypass_url=None, http_log_debug=False,
|
||||
auth_url='keystone_url', auth_token='fake_token',
|
||||
username=None, api_key=None, project_id=None)
|
||||
|
||||
@ -111,6 +117,7 @@ class ClientsTestCase(test_base.BaseTestCase):
|
||||
|
||||
@mock.patch('cinderclient.client.Client')
|
||||
def test_cinder(self, cinder):
|
||||
# test normal flow
|
||||
context = mock.NonCallableMock(
|
||||
auth_token='fake_token',
|
||||
service_catalog=[{'type': 'volume',
|
||||
@ -119,10 +126,17 @@ class ClientsTestCase(test_base.BaseTestCase):
|
||||
self.assertEqual(cinder.return_value, res)
|
||||
cinder.assert_called_with(
|
||||
'1', auth_url='keystone_url', service_type='volume',
|
||||
username=None, api_key=None)
|
||||
username=None, api_key=None, http_log_debug=False)
|
||||
self.assertEqual('fake_token', res.client.auth_token)
|
||||
self.assertEqual('cinder_url', res.client.management_url)
|
||||
|
||||
# test logging with debug option
|
||||
self.configure(debug=True)
|
||||
clients.cinder(context)
|
||||
cinder.assert_called_with(
|
||||
'1', auth_url='keystone_url', service_type='volume',
|
||||
username=None, api_key=None, http_log_debug=True)
|
||||
|
||||
@mock.patch('ec2api.context.get_keystone_client_class',
|
||||
return_value=mock.Mock(return_value=mock.Mock()))
|
||||
def test_keystone(self, keystone_client_class):
|
||||
|
Loading…
Reference in New Issue
Block a user