Remove DRBD connector

The DRBD driver was removed by the vendor in the Stein release of
Cinder. This cleans up the unused connector code.

Depends-on: https://review.opendev.org/745393

Change-Id: I14825e5b3a01bd766d0441d61fa8149aa1bd1e65
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
This commit is contained in:
Sean McGinnis 2020-08-07 14:10:35 -05:00
parent 32115be11c
commit 12a1603940
No known key found for this signature in database
GPG Key ID: CE7EE4BFAF8D70C8
5 changed files with 6 additions and 208 deletions

View File

@ -44,7 +44,6 @@ ISCSI = "ISCSI"
ISER = "ISER"
FIBRE_CHANNEL = "FIBRE_CHANNEL"
AOE = "AOE"
DRBD = "DRBD"
NFS = "NFS"
SMBFS = 'SMBFS'
GLUSTERFS = "GLUSTERFS"

View File

@ -59,7 +59,6 @@ unix_connector_list = [
'os_brick.initiator.connectors.rbd.RBDConnector',
'os_brick.initiator.connectors.local.LocalConnector',
'os_brick.initiator.connectors.gpfs.GPFSConnector',
'os_brick.initiator.connectors.drbd.DRBDConnector',
'os_brick.initiator.connectors.huawei.HuaweiStorHyperConnector',
'os_brick.initiator.connectors.hgst.HGSTConnector',
'os_brick.initiator.connectors.scaleio.ScaleIOConnector',
@ -82,9 +81,6 @@ def _get_connector_list():
_connector_mapping_linux = {
initiator.AOE:
'os_brick.initiator.connectors.aoe.AoEConnector',
initiator.DRBD:
'os_brick.initiator.connectors.drbd.DRBDConnector',
initiator.GLUSTERFS:
'os_brick.initiator.connectors.remotefs.RemoteFsConnector',
initiator.NFS:
@ -136,8 +132,6 @@ _connector_mapping_linux_s390x = {
initiator.FIBRE_CHANNEL:
'os_brick.initiator.connectors.fibre_channel_s390x.'
'FibreChannelConnectorS390X',
initiator.DRBD:
'os_brick.initiator.connectors.drbd.DRBDConnector',
initiator.NFS:
'os_brick.initiator.connectors.remotefs.RemoteFsConnector',
initiator.ISCSI:
@ -155,8 +149,6 @@ _connector_mapping_linux_ppc64 = {
initiator.FIBRE_CHANNEL:
('os_brick.initiator.connectors.fibre_channel_ppc64.'
'FibreChannelConnectorPPC64'),
initiator.DRBD:
'os_brick.initiator.connectors.drbd.DRBDConnector',
initiator.NFS:
'os_brick.initiator.connectors.remotefs.RemoteFsConnector',
initiator.ISCSI:

View File

@ -1,110 +0,0 @@
# 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.
import os
import tempfile
from oslo_concurrency import processutils as putils
from os_brick.initiator.connectors import base
from os_brick import utils
class DRBDConnector(base.BaseLinuxConnector):
""""Connector class to attach/detach DRBD resources."""
def __init__(self, root_helper, driver=None,
execute=putils.execute, *args, **kwargs):
super(DRBDConnector, self).__init__(root_helper, driver=driver,
execute=execute, *args, **kwargs)
self._execute = execute
self._root_helper = root_helper
@staticmethod
def get_connector_properties(root_helper, *args, **kwargs):
"""The DRBD connector properties."""
return {}
def check_valid_device(self, path, run_as_root=True):
"""Verify an existing volume."""
# TODO(linbit): check via drbdsetup first, to avoid blocking/hanging
# in case of network problems?
return super(DRBDConnector, self).check_valid_device(path, run_as_root)
def get_all_available_volumes(self, connection_properties=None):
base = "/dev/"
blkdev_list = []
for e in os.listdir(base):
path = base + e
if os.path.isblk(path):
blkdev_list.append(path)
return blkdev_list
def _drbdadm_command(self, cmd, data_dict, sh_secret):
# TODO(linbit): Write that resource file to a permanent location?
tmp = tempfile.NamedTemporaryFile(suffix="res", delete=False, mode="w")
try:
kv = {'shared-secret': sh_secret}
tmp.write(data_dict['config'] % kv)
tmp.close()
(out, err) = self._execute('drbdadm', cmd,
"-c", tmp.name,
data_dict['name'],
run_as_root=True,
root_helper=self._root_helper)
finally:
os.unlink(tmp.name)
return (out, err)
@utils.trace
def connect_volume(self, connection_properties):
"""Attach the volume."""
self._drbdadm_command("adjust", connection_properties,
connection_properties['provider_auth'])
device_info = {
'type': 'block',
'path': connection_properties['device'],
}
return device_info
@utils.trace
def disconnect_volume(self, connection_properties, device_info,
force=False, ignore_errors=False):
"""Detach the volume."""
self._drbdadm_command("down", connection_properties,
connection_properties['provider_auth'])
def get_volume_paths(self, connection_properties):
path = connection_properties['device']
return [path]
def get_search_path(self):
# TODO(linbit): is it allowed to return "/dev", or is that too broad?
return None
def extend_volume(self, connection_properties):
# TODO(walter-boring): is this possible?
raise NotImplementedError

View File

@ -1,89 +0,0 @@
# (c) Copyright 2013 Hewlett-Packard Development Company, L.P.
#
# 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.
from os_brick.initiator.connectors import drbd
from os_brick.tests.initiator import test_connector
class DRBDConnectorTestCase(test_connector.ConnectorTestCase):
RESOURCE_TEMPLATE = '''
resource r0 {
on host1 {
}
net {
shared-secret "%(shared-secret)s";
}
}
'''
def setUp(self):
super(DRBDConnectorTestCase, self).setUp()
self.connector = drbd.DRBDConnector(
None, execute=self._fake_exec)
self.execs = []
def _fake_exec(self, *cmd, **kwargs):
self.execs.append(cmd)
# out, err
return ('', '')
def test_get_connector_properties(self):
props = drbd.DRBDConnector.get_connector_properties(
'sudo', multipath=True, enforce_multipath=True)
expected_props = {}
self.assertEqual(expected_props, props)
def test_connect_volume(self):
"""Test connect_volume."""
cprop = {
'provider_auth': 'my-secret',
'config': self.RESOURCE_TEMPLATE,
'name': 'my-precious',
'device': '/dev/drbd951722',
'data': {},
}
res = self.connector.connect_volume(cprop)
self.assertEqual(cprop['device'], res['path'])
self.assertEqual('adjust', self.execs[0][1])
self.assertEqual(cprop['name'], self.execs[0][4])
def test_disconnect_volume(self):
"""Test the disconnect volume case."""
cprop = {
'provider_auth': 'my-secret',
'config': self.RESOURCE_TEMPLATE,
'name': 'my-precious',
'device': '/dev/drbd951722',
'data': {},
}
dev_info = {}
self.connector.disconnect_volume(cprop, dev_info)
self.assertEqual('down', self.execs[0][1])
def test_extend_volume(self):
cprop = {'name': 'something'}
self.assertRaises(NotImplementedError,
self.connector.extend_volume,
cprop)

View File

@ -0,0 +1,6 @@
---
upgrade:
- |
The DRBD driver was removed from Cinder in the Stein release by the vendor.
The connector logic in os-brick is no longer needed and has now been
removed.