Merge "NetApp cDOT driver enhanced support logging"
This commit is contained in:
commit
78e500c52b
manila
share/drivers/netapp/dataontap/cluster_mode
tests/share/drivers/netapp/dataontap
@ -20,6 +20,7 @@ single-SVM or multi-SVM functionality needed by the cDOT Manila drivers.
|
||||
"""
|
||||
|
||||
import copy
|
||||
import json
|
||||
import math
|
||||
import socket
|
||||
|
||||
@ -294,24 +295,49 @@ class NetAppCmodeFileStorageLibrary(object):
|
||||
@na_utils.trace
|
||||
def _handle_ems_logging(self):
|
||||
"""Build and send an EMS log message."""
|
||||
self._client.send_ems_log_message(self._build_ems_log_message())
|
||||
self._client.send_ems_log_message(self._build_ems_log_message_0())
|
||||
self._client.send_ems_log_message(self._build_ems_log_message_1())
|
||||
|
||||
@na_utils.trace
|
||||
def _build_ems_log_message(self):
|
||||
"""Construct EMS Autosupport log message."""
|
||||
def _build_base_ems_log_message(self):
|
||||
"""Construct EMS Autosupport log message common to all events."""
|
||||
|
||||
ems_log = {
|
||||
'computer-name': socket.getfqdn() or 'Manila_node',
|
||||
'event-id': '0',
|
||||
'computer-name': socket.gethostname() or 'Manila_node',
|
||||
'event-source': 'Manila driver %s' % self.driver_name,
|
||||
'app-version': self._app_version,
|
||||
'category': 'provisioning',
|
||||
'event-description': 'OpenStack Manila connected to cluster node',
|
||||
'log-level': '6',
|
||||
'log-level': '5',
|
||||
'auto-support': 'false',
|
||||
}
|
||||
return ems_log
|
||||
|
||||
@na_utils.trace
|
||||
def _build_ems_log_message_0(self):
|
||||
"""Construct EMS Autosupport log message with deployment info."""
|
||||
|
||||
ems_log = self._build_base_ems_log_message()
|
||||
ems_log.update({
|
||||
'event-id': '0',
|
||||
'event-description': 'OpenStack Manila connected to cluster node',
|
||||
})
|
||||
return ems_log
|
||||
|
||||
@na_utils.trace
|
||||
def _build_ems_log_message_1(self):
|
||||
"""Construct EMS Autosupport log message with storage pool info."""
|
||||
|
||||
message = self._get_ems_pool_info()
|
||||
|
||||
ems_log = self._build_base_ems_log_message()
|
||||
ems_log.update({
|
||||
'event-id': '1',
|
||||
'event-description': json.dumps(message),
|
||||
})
|
||||
return ems_log
|
||||
|
||||
def _get_ems_pool_info(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
@na_utils.trace
|
||||
def _handle_housekeeping_tasks(self):
|
||||
"""Handle various cleanup activities."""
|
||||
|
@ -88,6 +88,14 @@ class NetAppCmodeMultiSVMFileStorageLibrary(
|
||||
vserver_client = self._get_api_client(vserver)
|
||||
return vserver, vserver_client
|
||||
|
||||
def _get_ems_pool_info(self):
|
||||
return {
|
||||
'pools': {
|
||||
'vserver': None,
|
||||
'aggregates': self._find_matching_aggregates(),
|
||||
},
|
||||
}
|
||||
|
||||
@na_utils.trace
|
||||
def _handle_housekeeping_tasks(self):
|
||||
"""Handle various cleanup activities."""
|
||||
|
@ -100,6 +100,14 @@ class NetAppCmodeSingleSVMFileStorageLibrary(
|
||||
vserver_client = self._get_api_client(self._vserver)
|
||||
return self._vserver, vserver_client
|
||||
|
||||
def _get_ems_pool_info(self):
|
||||
return {
|
||||
'pools': {
|
||||
'vserver': self._vserver,
|
||||
'aggregates': self._find_matching_aggregates(),
|
||||
},
|
||||
}
|
||||
|
||||
@na_utils.trace
|
||||
def _handle_housekeeping_tasks(self):
|
||||
"""Handle various cleanup activities."""
|
||||
|
@ -17,6 +17,7 @@ Unit tests for the NetApp Data ONTAP cDOT base storage driver library.
|
||||
"""
|
||||
|
||||
import copy
|
||||
import json
|
||||
import math
|
||||
import socket
|
||||
import time
|
||||
@ -409,33 +410,54 @@ class NetAppFileStorageLibraryTestCase(test.TestCase):
|
||||
def test_handle_ems_logging(self):
|
||||
|
||||
self.mock_object(self.library,
|
||||
'_build_ems_log_message',
|
||||
mock.Mock(return_value=fake.EMS_MESSAGE))
|
||||
'_build_ems_log_message_0',
|
||||
mock.Mock(return_value=fake.EMS_MESSAGE_0))
|
||||
self.mock_object(self.library,
|
||||
'_build_ems_log_message_1',
|
||||
mock.Mock(return_value=fake.EMS_MESSAGE_1))
|
||||
|
||||
self.library._handle_ems_logging()
|
||||
|
||||
self.library._client.send_ems_log_message.assert_called_with(
|
||||
fake.EMS_MESSAGE)
|
||||
self.library._client.send_ems_log_message.assert_has_calls([
|
||||
mock.call(fake.EMS_MESSAGE_0),
|
||||
mock.call(fake.EMS_MESSAGE_1),
|
||||
])
|
||||
|
||||
def test_build_ems_log_message(self):
|
||||
def test_build_ems_log_message_0(self):
|
||||
|
||||
self.mock_object(socket,
|
||||
'getfqdn',
|
||||
'gethostname',
|
||||
mock.Mock(return_value=fake.HOST_NAME))
|
||||
|
||||
result = self.library._build_ems_log_message()
|
||||
result = self.library._build_ems_log_message_0()
|
||||
|
||||
fake_ems_log = {
|
||||
'computer-name': fake.HOST_NAME,
|
||||
'event-id': '0',
|
||||
'event-source': 'Manila driver %s' % fake.DRIVER_NAME,
|
||||
'app-version': fake.APP_VERSION,
|
||||
'category': 'provisioning',
|
||||
'event-description': 'OpenStack Manila connected to cluster node',
|
||||
'log-level': '6',
|
||||
'auto-support': 'false'
|
||||
self.assertDictEqual(fake.EMS_MESSAGE_0, result)
|
||||
|
||||
def test_build_ems_log_message_1(self):
|
||||
|
||||
pool_info = {
|
||||
'pools': {
|
||||
'vserver': 'fake_vserver',
|
||||
'aggregates': ['aggr1', 'aggr2'],
|
||||
},
|
||||
}
|
||||
self.assertDictEqual(fake_ems_log, result)
|
||||
self.mock_object(socket,
|
||||
'gethostname',
|
||||
mock.Mock(return_value=fake.HOST_NAME))
|
||||
self.mock_object(self.library,
|
||||
'_get_ems_pool_info',
|
||||
mock.Mock(return_value=pool_info))
|
||||
|
||||
result = self.library._build_ems_log_message_1()
|
||||
|
||||
self.assertDictEqual(pool_info,
|
||||
json.loads(result['event-description']))
|
||||
result['event-description'] = ''
|
||||
self.assertDictEqual(fake.EMS_MESSAGE_1, result)
|
||||
|
||||
def test_get_ems_pool_info(self):
|
||||
self.assertRaises(NotImplementedError,
|
||||
self.library._get_ems_pool_info)
|
||||
|
||||
def test_find_matching_aggregates(self):
|
||||
self.assertRaises(NotImplementedError,
|
||||
|
@ -171,6 +171,22 @@ class NetAppFileStorageLibraryTestCase(test.TestCase):
|
||||
|
||||
self.assertTupleEqual((fake.VSERVER1, 'fake_client'), result)
|
||||
|
||||
def test_get_ems_pool_info(self):
|
||||
|
||||
self.mock_object(self.library,
|
||||
'_find_matching_aggregates',
|
||||
mock.Mock(return_value=['aggr1', 'aggr2']))
|
||||
|
||||
result = self.library._get_ems_pool_info()
|
||||
|
||||
expected = {
|
||||
'pools': {
|
||||
'vserver': None,
|
||||
'aggregates': ['aggr1', 'aggr2'],
|
||||
},
|
||||
}
|
||||
self.assertEqual(expected, result)
|
||||
|
||||
def test_handle_housekeeping_tasks(self):
|
||||
|
||||
self.mock_object(self.client, 'prune_deleted_nfs_export_policies')
|
||||
|
@ -150,6 +150,22 @@ class NetAppFileStorageLibraryTestCase(test.TestCase):
|
||||
self.assertRaises(exception.VserverNotFound,
|
||||
self.library._get_vserver)
|
||||
|
||||
def test_get_ems_pool_info(self):
|
||||
|
||||
self.mock_object(self.library,
|
||||
'_find_matching_aggregates',
|
||||
mock.Mock(return_value=['aggr1', 'aggr2']))
|
||||
|
||||
result = self.library._get_ems_pool_info()
|
||||
|
||||
expected = {
|
||||
'pools': {
|
||||
'vserver': fake.VSERVER1,
|
||||
'aggregates': ['aggr1', 'aggr2'],
|
||||
},
|
||||
}
|
||||
self.assertEqual(expected, result)
|
||||
|
||||
def test_handle_housekeeping_tasks(self):
|
||||
|
||||
mock_vserver_client = mock.Mock()
|
||||
|
@ -476,14 +476,25 @@ SHARE_ACCESS = {
|
||||
'access_to': [LIF_ADDRESSES[0]]
|
||||
}
|
||||
|
||||
EMS_MESSAGE = {
|
||||
'computer-name': 'fake_host',
|
||||
EMS_MESSAGE_0 = {
|
||||
'computer-name': HOST_NAME,
|
||||
'event-id': '0',
|
||||
'event-source': 'fake_driver',
|
||||
'app-version': 'fake_app_version',
|
||||
'category': 'fake_category',
|
||||
'event-description': 'fake_description',
|
||||
'log-level': '6',
|
||||
'event-source': 'Manila driver %s' % DRIVER_NAME,
|
||||
'app-version': APP_VERSION,
|
||||
'category': 'provisioning',
|
||||
'event-description': 'OpenStack Manila connected to cluster node',
|
||||
'log-level': '5',
|
||||
'auto-support': 'false'
|
||||
}
|
||||
|
||||
EMS_MESSAGE_1 = {
|
||||
'computer-name': HOST_NAME,
|
||||
'event-id': '1',
|
||||
'event-source': 'Manila driver %s' % DRIVER_NAME,
|
||||
'app-version': APP_VERSION,
|
||||
'category': 'provisioning',
|
||||
'event-description': '',
|
||||
'log-level': '5',
|
||||
'auto-support': 'false'
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user