Rbd: Deprecate unused rados_connect_timeout
This option determines the value we pass as the "timeout" argument to rados.Rados.connect. Unfortunately, this argument is silently ignored by librados[1]. [1] https://docs.ceph.com/en/latest/rados/api/python/#rados.Rados.connect Closes-Bug: #1983499 Change-Id: I819df987f690c7a8c0a1153ad0e30bd5dbeb7b57
This commit is contained in:
@@ -133,6 +133,13 @@ Related options:
|
|||||||
|
|
||||||
"""),
|
"""),
|
||||||
cfg.IntOpt('rados_connect_timeout', default=0,
|
cfg.IntOpt('rados_connect_timeout', default=0,
|
||||||
|
deprecated_for_removal=True,
|
||||||
|
deprecated_since='Zed',
|
||||||
|
deprecated_reason="""
|
||||||
|
This option has not had any effect in years. Users willing to set a timeout for
|
||||||
|
connecting to the Ceph cluster should use 'client_mount_timeout' in Ceph's
|
||||||
|
configuration file.
|
||||||
|
""",
|
||||||
help="""
|
help="""
|
||||||
Timeout value for connecting to Ceph cluster.
|
Timeout value for connecting to Ceph cluster.
|
||||||
|
|
||||||
@@ -288,7 +295,7 @@ class Store(driver.Store):
|
|||||||
client = rados.Rados(conffile=conffile, rados_id=rados_id)
|
client = rados.Rados(conffile=conffile, rados_id=rados_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client.connect(timeout=self.connect_timeout)
|
client.connect()
|
||||||
except (rados.Error, rados.ObjectNotFound) as e:
|
except (rados.Error, rados.ObjectNotFound) as e:
|
||||||
if self.backend_group and len(self.conf.enabled_backends) > 1:
|
if self.backend_group and len(self.conf.enabled_backends) > 1:
|
||||||
reason = _("Error in store configuration: %s") % e
|
reason = _("Error in store configuration: %s") % e
|
||||||
@@ -319,8 +326,6 @@ class Store(driver.Store):
|
|||||||
user = getattr(self.conf, self.backend_group).rbd_store_user
|
user = getattr(self.conf, self.backend_group).rbd_store_user
|
||||||
conf_file = getattr(self.conf,
|
conf_file = getattr(self.conf,
|
||||||
self.backend_group).rbd_store_ceph_conf
|
self.backend_group).rbd_store_ceph_conf
|
||||||
connect_timeout = getattr(
|
|
||||||
self.conf, self.backend_group).rados_connect_timeout
|
|
||||||
thin_provisioning = getattr(self.conf,
|
thin_provisioning = getattr(self.conf,
|
||||||
self.backend_group).\
|
self.backend_group).\
|
||||||
rbd_thin_provisioning
|
rbd_thin_provisioning
|
||||||
@@ -329,7 +334,6 @@ class Store(driver.Store):
|
|||||||
pool = self.conf.glance_store.rbd_store_pool
|
pool = self.conf.glance_store.rbd_store_pool
|
||||||
user = self.conf.glance_store.rbd_store_user
|
user = self.conf.glance_store.rbd_store_user
|
||||||
conf_file = self.conf.glance_store.rbd_store_ceph_conf
|
conf_file = self.conf.glance_store.rbd_store_ceph_conf
|
||||||
connect_timeout = self.conf.glance_store.rados_connect_timeout
|
|
||||||
thin_provisioning = \
|
thin_provisioning = \
|
||||||
self.conf.glance_store.rbd_thin_provisioning
|
self.conf.glance_store.rbd_thin_provisioning
|
||||||
|
|
||||||
@@ -343,7 +347,6 @@ class Store(driver.Store):
|
|||||||
self.pool = str(pool)
|
self.pool = str(pool)
|
||||||
self.user = str(user)
|
self.user = str(user)
|
||||||
self.conf_file = str(conf_file)
|
self.conf_file = str(conf_file)
|
||||||
self.connect_timeout = connect_timeout
|
|
||||||
except cfg.ConfigFileValueError as e:
|
except cfg.ConfigFileValueError as e:
|
||||||
reason = _("Error in store configuration: %s") % e
|
reason = _("Error in store configuration: %s") % e
|
||||||
LOG.error(reason)
|
LOG.error(reason)
|
||||||
|
@@ -450,14 +450,6 @@ class TestMultiStore(base.MultiStoreBaseTest,
|
|||||||
self.assertRaises(exceptions.StoreRandomGetNotSupported,
|
self.assertRaises(exceptions.StoreRandomGetNotSupported,
|
||||||
self.store.get, loc, chunk_size=1)
|
self.store.get, loc, chunk_size=1)
|
||||||
|
|
||||||
@mock.patch.object(MockRados.Rados, 'connect')
|
|
||||||
def test_rados_connect_timeout(self, mock_rados_connect):
|
|
||||||
socket_timeout = 1
|
|
||||||
self.config(rados_connect_timeout=socket_timeout, group="ceph1")
|
|
||||||
self.store.configure()
|
|
||||||
with self.store.get_connection('conffile', 'rados_id'):
|
|
||||||
mock_rados_connect.assert_called_with(timeout=socket_timeout)
|
|
||||||
|
|
||||||
@mock.patch.object(MockRados.Rados, 'connect', side_effect=MockRados.Error)
|
@mock.patch.object(MockRados.Rados, 'connect', side_effect=MockRados.Error)
|
||||||
def test_rados_connect_error(self, _):
|
def test_rados_connect_error(self, _):
|
||||||
rbd_store.rados.Error = MockRados.Error
|
rbd_store.rados.Error = MockRados.Error
|
||||||
|
@@ -656,14 +656,6 @@ class TestStore(base.StoreBaseTest,
|
|||||||
self.assertRaises(exceptions.StoreRandomGetNotSupported,
|
self.assertRaises(exceptions.StoreRandomGetNotSupported,
|
||||||
self.store.get, loc, chunk_size=1)
|
self.store.get, loc, chunk_size=1)
|
||||||
|
|
||||||
@mock.patch.object(MockRados.Rados, 'connect')
|
|
||||||
def test_rados_connect_timeout(self, mock_rados_connect):
|
|
||||||
socket_timeout = 1
|
|
||||||
self.config(rados_connect_timeout=socket_timeout)
|
|
||||||
self.store.configure()
|
|
||||||
with self.store.get_connection('conffile', 'rados_id'):
|
|
||||||
mock_rados_connect.assert_called_with(timeout=socket_timeout)
|
|
||||||
|
|
||||||
@mock.patch.object(MockRados.Rados, 'connect', side_effect=MockRados.Error)
|
@mock.patch.object(MockRados.Rados, 'connect', side_effect=MockRados.Error)
|
||||||
def test_rados_connect_error(self, _):
|
def test_rados_connect_error(self, _):
|
||||||
rbd_store.rados.Error = MockRados.Error
|
rbd_store.rados.Error = MockRados.Error
|
||||||
|
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
The 'rados_connect_timeout' config option for the RBD store has been
|
||||||
|
deprecated and will be removed in the future. It has been silently ignored
|
||||||
|
for multiple releases. Users willing to set a timeout for the connection to
|
||||||
|
the cluster can use Ceph's 'client_mount_timeout' option.
|
Reference in New Issue
Block a user