nova/nova/tests/unit/virt/libvirt/volume/test_drbd.py
Matthew Booth b912556ae0 Remove unused argument from LibvirtDriver._disconnect_volume
_disconnect_volume was being passed disk_dev, which was is name of the
disk as presented to the gust. However, _disconnect_volume is only
concerned with unmounting the volume from the host, so this isn't
relevant.

A couple of volume drivers were using it for logging. We remove these
because it wasn't done consistently, is better done by the caller, and
isn't required as the information is available from other log
messages.

In the very minor associated debug log cleanup we also remove logging
of connection_info from one volume driver, which is potential security
bug.

We also do some associated cleanup in a few volume driver tests which
were assuming that disconnect_volume was being passed disk_info rather
than disk_dev, and that connection_info['data'] is related to
disk_info, which it isn't.

Change-Id: I61a0bee9e71e9a67f6a7c04a7bfd6e77fe818a77
2017-12-17 07:12:04 +00:00

63 lines
2.7 KiB
Python

# Copyright (c) 2015 LINBIT HA-Solutions GmbH.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Unit tests for the DRDB volume driver module."""
import mock
from os_brick.initiator import connector
from nova import context as nova_context
from nova.tests.unit import fake_instance
from nova.tests.unit.virt.libvirt.volume import test_volume
from nova.virt.libvirt.volume import drbd
class LibvirtDRBDVolumeDriverTestCase(
test_volume.LibvirtVolumeBaseTestCase):
"""Tests the LibvirtDRBDVolumeDriver class."""
def test_libvirt_drbd_driver(self):
drbd_driver = drbd.LibvirtDRBDVolumeDriver(self.fake_host)
self.assertIsInstance(drbd_driver.connector, connector.DRBDConnector)
# connect a fake volume
connection_info = {
'data': {
'device': '/path/to/fake-device'
}
}
ctxt = nova_context.RequestContext('fake-user', 'fake-project')
instance = fake_instance.fake_instance_obj(ctxt)
device_info = {
'type': 'block',
'path': connection_info['data']['device'],
}
with mock.patch.object(connector.DRBDConnector, 'connect_volume',
return_value=device_info):
drbd_driver.connect_volume(connection_info, instance)
# assert that the device_path was set
self.assertIn('device_path', connection_info['data'])
self.assertEqual('/path/to/fake-device',
connection_info['data']['device_path'])
# now get the config using the updated connection_info
conf = drbd_driver.get_config(connection_info, self.disk_info)
# assert things were passed through to the parent class
self.assertEqual('block', conf.source_type)
self.assertEqual('/path/to/fake-device', conf.source_path)
# now disconnect the volume
with mock.patch.object(connector.DRBDConnector,
'disconnect_volume') as mock_disconnect:
drbd_driver.disconnect_volume(connection_info, instance)
# disconnect is all passthrough so just assert the call
mock_disconnect.assert_called_once_with(connection_info['data'], None)