[Bug 1882844] Re: No way to set SSL parameters with pymysql
David Ames
1882844 at bugs.launchpad.net
Mon Jun 15 16:02:53 UTC 2020
Michael,
I have confirmed you are correct. Apologies for the trash. I swear I
tested that. Closing this bug.
For completeness, the check_hostname parameter comes from pymysql [0].
[0] https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/connections.py#L336
** Changed in: oslo.db
Status: In Progress => Invalid
** Changed in: python-oslo.db (Ubuntu)
Status: Triaged => Invalid
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to python-oslo.db in Ubuntu.
https://bugs.launchpad.net/bugs/1882844
Title:
No way to set SSL parameters with pymysql
Status in oslo.db:
Invalid
Status in python-oslo.db package in Ubuntu:
Invalid
Bug description:
There is no way to pass SSL parameters from oslo.db through sqlalchemy
to pymysql.
pymsyql is expecting a parameter, "ssl" to be a dictionary of the
form:
ssl= {
"ca": "/path/to/ca.pem",
"capath": "/path/to/cas/",
"cert": "/path/to/cert.pem",
"key": "/path/to/key.pem",
"cipher": "tls_1.2",
"check_hostname: False,
}
Steps to reproduce:
Examples use:
python3-keystone 2:17.0.0-0ubuntu0.20.04.1
python3-oslo.db 8.1.0-0ubuntu1
If connection parameters set several of these items, then the
following warning occurs and DB access fails.
connection_parameters = ssl=True&ca=/etc/ssl/certs/ca-certificates.crt
(keystone.server.flask.application): 2020-06-09 20:34:10,159 WARNING
__init__() got an unexpected keyword argument 'ca'
If only attempting to turn on ssl, then the following traceback occurs because it is a str not a dict.
connection_parameters = ssl=True
020-06-09 20:35:50.110184 Traceback (most recent call last):
2020-06-09 20:35:50.110644 File "/usr/lib/python3/dist-packages/keystone/notifications.py", line 573, in wrapper
2020-06-09 20:35:50.110733 result = f(wrapped_self, user_id, *args, **kwargs)
2020-06-09 20:35:50.110804 File "/usr/lib/python3/dist-packages/keystone/identity/core.py", line 414, in wrapper
2020-06-09 20:35:50.110862 return f(self, *args, **kwargs)
2020-06-09 20:35:50.110922 File "/usr/lib/python3/dist-packages/keystone/identity/core.py", line 424, in wrapper
2020-06-09 20:35:50.110988 return f(self, *args, **kwargs)
2020-06-09 20:35:50.111064 File "/usr/lib/python3/dist-packages/keystone/identity/core.py", line 903, in authenticate
2020-06-09 20:35:50.111130 ref = driver.authenticate(entity_id, password)
2020-06-09 20:35:50.111191 File "/usr/lib/python3/dist-packages/keystone/identity/backends/sql.py", line 59, in authenticate
2020-06-09 20:35:50.117473 with sql.session_for_read() as session:
2020-06-09 20:35:50.117713 File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
2020-06-09 20:35:50.117878 return next(self.gen)
2020-06-09 20:35:50.118071 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 1058, in _transaction_scope
2020-06-09 20:35:50.118201 with current._produce_block(
2020-06-09 20:35:50.118357 File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
2020-06-09 20:35:50.118572 return next(self.gen)
2020-06-09 20:35:50.118693 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 657, in _session
2020-06-09 20:35:50.118771 self.session = self.factory._create_session(
2020-06-09 20:35:50.118876 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 418, in _create_session
2020-06-09 20:35:50.118955 self._start()
2020-06-09 20:35:50.119079 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 508, in _start
2020-06-09 20:35:50.119157 self._setup_for_connection(
2020-06-09 20:35:50.119349 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 533, in _setup_for_connection
2020-06-09 20:35:50.119542 engine = engines.create_engine(
2020-06-09 20:35:50.119738 File "/usr/lib/python3/dist-packages/debtcollector/renames.py", line 43, in decorator
2020-06-09 20:35:50.119861 return wrapped(*args, **kwargs)
2020-06-09 20:35:50.120012 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/engines.py", line 201, in create_engine
2020-06-09 20:35:50.120135 test_conn = _test_connection(engine, max_retries, retry_interval)
2020-06-09 20:35:50.120267 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/engines.py", line 376, in _test_connection
2020-06-09 20:35:50.120390 return engine.connect()
2020-06-09 20:35:50.120609 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2209, in connect
2020-06-09 20:35:50.120733 return self._connection_cls(self, **kwargs)
2020-06-09 20:35:50.120882 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 103, in __init__
2020-06-09 20:35:50.121013 else engine.raw_connection()
2020-06-09 20:35:50.121110 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2306, in raw_connection
2020-06-09 20:35:50.121185 return self._wrap_pool_connect(
2020-06-09 20:35:50.121282 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2276, in _wrap_pool_connect
2020-06-09 20:35:50.121358 return fn()
2020-06-09 20:35:50.121607 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 303, in unique_connection
2020-06-09 20:35:50.121734 return _ConnectionFairy._checkout(self)
2020-06-09 20:35:50.121876 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 760, in _checkout
2020-06-09 20:35:50.121955 fairy = _ConnectionRecord.checkout(pool)
2020-06-09 20:35:50.122139 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 492, in checkout
2020-06-09 20:35:50.122219 rec = pool._do_get()
2020-06-09 20:35:50.122316 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/impl.py", line 139, in _do_get
2020-06-09 20:35:50.122438 self._dec_overflow()
2020-06-09 20:35:50.122649 File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
2020-06-09 20:35:50.122755 compat.reraise(exc_type, exc_value, exc_tb)
2020-06-09 20:35:50.122857 File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 153, in reraise
2020-06-09 20:35:50.122933 raise value
2020-06-09 20:35:50.123030 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/impl.py", line 136, in _do_get
2020-06-09 20:35:50.123106 return self._create_connection()
2020-06-09 20:35:50.123232 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 308, in _create_connection
2020-06-09 20:35:50.123347 return _ConnectionRecord(self)
2020-06-09 20:35:50.123508 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 437, in __init__
2020-06-09 20:35:50.123693 self.__connect(first_connect_check=True)
2020-06-09 20:35:50.123814 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 639, in __connect
2020-06-09 20:35:50.123891 connection = pool._invoke_creator(self)
2020-06-09 20:35:50.123991 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/strategies.py", line 114, in connect
2020-06-09 20:35:50.124067 return dialect.connect(*cargs, **cparams)
2020-06-09 20:35:50.124163 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 482, in connect
2020-06-09 20:35:50.124240 return self.dbapi.connect(*cargs, **cparams)
2020-06-09 20:35:50.124364 File "/usr/lib/python3/dist-packages/pymysql/__init__.py", line 94, in Connect
2020-06-09 20:35:50.124458 return Connection(*args, **kwargs)
2020-06-09 20:35:50.124611 File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 253, in __init__
2020-06-09 20:35:50.124694 self.ctx = self._create_ssl_ctx(ssl)
2020-06-09 20:35:50.124792 File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 330, in _create_ssl_ctx
2020-06-09 20:35:50.125073 ca = sslp.get('ca')
2020-06-09 20:35:50.125201 AttributeError: 'str' object has no attribute 'get'
2020-06-09 20:35:50.125530
2020-06-09 20:35:50.125681 During handling of the above exception, another exception occurred:
2020-06-09 20:35:50.125787
2020-06-09 20:35:50.125891 Traceback (most recent call last):
2020-06-09 20:35:50.126395 File "/usr/lib/python3/dist-packages/flask/app.py", line 2463, in __call__
2020-06-09 20:35:50.126479 return self.wsgi_app(environ, start_response)
2020-06-09 20:35:50.126547 File "/usr/lib/python3/dist-packages/werkzeug/middleware/proxy_fix.py", line 232, in __call__
2020-06-09 20:35:50.126679 return self.app(environ, start_response)
2020-06-09 20:35:50.126748 File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2020-06-09 20:35:50.126802 resp = self.call_func(req, *args, **kw)
2020-06-09 20:35:50.126860 File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
2020-06-09 20:35:50.126912 return self.func(req, *args, **kwargs)
2020-06-09 20:35:50.126969 File "/usr/lib/python3/dist-packages/oslo_middleware/base.py", line 130, in __call__
2020-06-09 20:35:50.127021 response = req.get_response(self.application)
2020-06-09 20:35:50.127077 File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
2020-06-09 20:35:50.127129 status, headers, app_iter = self.call_application(
2020-06-09 20:35:50.127186 File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
2020-06-09 20:35:50.127338 app_iter = application(self.environ, start_response)
2020-06-09 20:35:50.127423 File "/usr/lib/python3/dist-packages/webob/dec.py", line 143, in __call__
2020-06-09 20:35:50.127479 return resp(environ, start_response)
2020-06-09 20:35:50.127536 File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2020-06-09 20:35:50.127663 resp = self.call_func(req, *args, **kw)
2020-06-09 20:35:50.127736 File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
2020-06-09 20:35:50.127791 return self.func(req, *args, **kwargs)
2020-06-09 20:35:50.127848 File "/usr/lib/python3/dist-packages/oslo_middleware/base.py", line 130, in __call__
2020-06-09 20:35:50.127901 response = req.get_response(self.application)
2020-06-09 20:35:50.127957 File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
2020-06-09 20:35:50.128008 status, headers, app_iter = self.call_application(
2020-06-09 20:35:50.128065 File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
2020-06-09 20:35:50.128182 app_iter = application(self.environ, start_response)
2020-06-09 20:35:50.128278 File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2020-06-09 20:35:50.128382 resp = self.call_func(req, *args, **kw)
2020-06-09 20:35:50.128482 File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
2020-06-09 20:35:50.128567 return self.func(req, *args, **kwargs)
2020-06-09 20:35:50.128730 File "/usr/lib/python3/dist-packages/osprofiler/web.py", line 112, in __call__
2020-06-09 20:35:50.128811 return request.get_response(self.application)
2020-06-09 20:35:50.128877 File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
2020-06-09 20:35:50.128944 status, headers, app_iter = self.call_application(
2020-06-09 20:35:50.129004 File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
2020-06-09 20:35:50.129056 app_iter = application(self.environ, start_response)
2020-06-09 20:35:50.129113 File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2020-06-09 20:35:50.129165 resp = self.call_func(req, *args, **kw)
2020-06-09 20:35:50.129222 File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
2020-06-09 20:35:50.129273 return self.func(req, *args, **kwargs)
2020-06-09 20:35:50.129330 File "/usr/lib/python3/dist-packages/oslo_middleware/request_id.py", line 58, in __call__
2020-06-09 20:35:50.129382 response = req.get_response(self.application)
2020-06-09 20:35:50.129439 File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
2020-06-09 20:35:50.129499 status, headers, app_iter = self.call_application(
2020-06-09 20:35:50.129576 File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
2020-06-09 20:35:50.129688 app_iter = application(self.environ, start_response)
2020-06-09 20:35:50.129763 File "/usr/lib/python3/dist-packages/keystone/server/flask/request_processing/middleware/url_normalize.py", line 38, in __call__
2020-06-09 20:35:50.129835 return self.app(environ, start_response)
2020-06-09 20:35:50.129896 File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2020-06-09 20:35:50.129948 resp = self.call_func(req, *args, **kw)
2020-06-09 20:35:50.130042 File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
2020-06-09 20:35:50.130101 return self.func(req, *args, **kwargs)
2020-06-09 20:35:50.130158 File "/usr/lib/python3/dist-packages/keystonemiddleware/auth_token/__init__.py", line 341, in __call__
2020-06-09 20:35:50.130210 response = req.get_response(self._app)
2020-06-09 20:35:50.130267 File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
2020-06-09 20:35:50.130318 status, headers, app_iter = self.call_application(
2020-06-09 20:35:50.130434 File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
2020-06-09 20:35:50.130515 app_iter = application(self.environ, start_response)
2020-06-09 20:35:50.130611 File "/usr/lib/python3/dist-packages/werkzeug/middleware/dispatcher.py", line 66, in __call__
2020-06-09 20:35:50.130800 return app(environ, start_response)
2020-06-09 20:35:50.130890 File "/usr/lib/python3/dist-packages/flask/app.py", line 2449, in wsgi_app
2020-06-09 20:35:50.130956 response = self.handle_exception(e)
2020-06-09 20:35:50.131030 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.131148 return original_handler(e)
2020-06-09 20:35:50.131256 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.131321 return original_handler(e)
2020-06-09 20:35:50.131383 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.131436 return original_handler(e)
2020-06-09 20:35:50.131493 [Previous line repeated 27 more times]
2020-06-09 20:35:50.131554 File "/usr/lib/python3/dist-packages/flask/app.py", line 1866, in handle_exception
2020-06-09 20:35:50.131606 reraise(exc_type, exc_value, tb)
2020-06-09 20:35:50.132051 File "/usr/lib/python3/dist-packages/flask/_compat.py", line 38, in reraise
2020-06-09 20:35:50.132201 raise value.with_traceback(tb)
2020-06-09 20:35:50.132317 File "/usr/lib/python3/dist-packages/flask/app.py", line 2446, in wsgi_app
2020-06-09 20:35:50.132402 response = self.full_dispatch_request()
2020-06-09 20:35:50.132498 File "/usr/lib/python3/dist-packages/flask/app.py", line 1951, in full_dispatch_request
2020-06-09 20:35:50.132574 rv = self.handle_user_exception(e)
2020-06-09 20:35:50.132689 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.132862 return original_handler(e)
2020-06-09 20:35:50.132975 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.133053 return original_handler(e)
2020-06-09 20:35:50.133149 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 272, in error_router
2020-06-09 20:35:50.133236 return original_handler(e)
2020-06-09 20:35:50.133366 [Previous line repeated 27 more times]
2020-06-09 20:35:50.133464 File "/usr/lib/python3/dist-packages/flask/app.py", line 1820, in handle_user_exception
2020-06-09 20:35:50.133541 reraise(exc_type, exc_value, tb)
2020-06-09 20:35:50.133640 File "/usr/lib/python3/dist-packages/flask/_compat.py", line 38, in reraise
2020-06-09 20:35:50.133789 raise value.with_traceback(tb)
2020-06-09 20:35:50.133903 File "/usr/lib/python3/dist-packages/flask/app.py", line 1949, in full_dispatch_request
2020-06-09 20:35:50.142432 rv = self.dispatch_request()
2020-06-09 20:35:50.143007 File "/usr/lib/python3/dist-packages/flask/app.py", line 1935, in dispatch_request
2020-06-09 20:35:50.143040 return self.view_functions[rule.endpoint](**req.view_args)
2020-06-09 20:35:50.143066 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 468, in wrapper
2020-06-09 20:35:50.143087 resp = resource(*args, **kwargs)
2020-06-09 20:35:50.143110 File "/usr/lib/python3/dist-packages/flask/views.py", line 89, in view
2020-06-09 20:35:50.143140 return self.dispatch_request(*args, **kwargs)
2020-06-09 20:35:50.143168 File "/usr/lib/python3/dist-packages/flask_restful/__init__.py", line 583, in dispatch_request
2020-06-09 20:35:50.143189 resp = meth(*args, **kwargs)
2020-06-09 20:35:50.143212 File "/usr/lib/python3/dist-packages/keystone/server/flask/common.py", line 1064, in wrapper
2020-06-09 20:35:50.143232 return f(*args, **kwargs)
2020-06-09 20:35:50.143254 File "/usr/lib/python3/dist-packages/keystone/api/auth.py", line 315, in post
2020-06-09 20:35:50.143274 token = authentication.authenticate_for_token(auth_data)
2020-06-09 20:35:50.143298 File "/usr/lib/python3/dist-packages/keystone/api/_shared/authentication.py", line 185, in authenticate_for_token
2020-06-09 20:35:50.143319 authenticate(auth_info, auth_context)
2020-06-09 20:35:50.143343 File "/usr/lib/python3/dist-packages/keystone/api/_shared/authentication.py", line 152, in authenticate
2020-06-09 20:35:50.143363 resp = method.authenticate(auth_info.get_method_data(method_name))
2020-06-09 20:35:50.143386 File "/usr/lib/python3/dist-packages/keystone/auth/plugins/password.py", line 34, in authenticate
2020-06-09 20:35:50.143407 PROVIDERS.identity_api.authenticate(
2020-06-09 20:35:50.143429 File "/usr/lib/python3/dist-packages/keystone/common/manager.py", line 115, in wrapped
2020-06-09 20:35:50.143449 __ret_val = __f(*args, **kwargs)
2020-06-09 20:35:50.143471 File "/usr/lib/python3/dist-packages/keystone/notifications.py", line 586, in wrapper
2020-06-09 20:35:50.143491 _send_audit_notification(self.action, initiator,
2020-06-09 20:35:50.143514 File "/usr/lib/python3/dist-packages/keystone/notifications.py", line 761, in _send_audit_notification
2020-06-09 20:35:50.143534 service_list = _CATALOG_HELPER_OBJ.catalog_api.list_services()
2020-06-09 20:35:50.143636 File "/usr/lib/python3/dist-packages/keystone/common/manager.py", line 115, in wrapped
2020-06-09 20:35:50.143751 __ret_val = __f(*args, **kwargs)
2020-06-09 20:35:50.143783 File "/usr/lib/python3/dist-packages/keystone/common/manager.py", line 62, in wrapper
2020-06-09 20:35:50.143804 return f(self, *args, **kwargs)
2020-06-09 20:35:50.143827 File "/usr/lib/python3/dist-packages/keystone/catalog/core.py", line 179, in list_services
2020-06-09 20:35:50.143848 return self.driver.list_services(hints or driver_hints.Hints())
2020-06-09 20:35:50.143871 File "/usr/lib/python3/dist-packages/keystone/common/driver_hints.py", line 42, in wrapper
2020-06-09 20:35:50.143891 return f(self, hints, *args, **kwargs)
2020-06-09 20:35:50.143913 File "/usr/lib/python3/dist-packages/keystone/catalog/backends/sql.py", line 183, in list_services
2020-06-09 20:35:50.143933 with sql.session_for_read() as session:
2020-06-09 20:35:50.143957 File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
2020-06-09 20:35:50.143976 return next(self.gen)
2020-06-09 20:35:50.143998 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 1058, in _transaction_scope
2020-06-09 20:35:50.144018 with current._produce_block(
2020-06-09 20:35:50.144041 File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
2020-06-09 20:35:50.144060 return next(self.gen)
2020-06-09 20:35:50.144083 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 657, in _session
2020-06-09 20:35:50.144102 self.session = self.factory._create_session(
2020-06-09 20:35:50.144125 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 418, in _create_session
2020-06-09 20:35:50.144145 self._start()
2020-06-09 20:35:50.144167 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 508, in _start
2020-06-09 20:35:50.144187 self._setup_for_connection(
2020-06-09 20:35:50.144209 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 533, in _setup_for_connection
2020-06-09 20:35:50.144228 engine = engines.create_engine(
2020-06-09 20:35:50.144251 File "/usr/lib/python3/dist-packages/debtcollector/renames.py", line 43, in decorator
2020-06-09 20:35:50.144271 return wrapped(*args, **kwargs)
2020-06-09 20:35:50.144293 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/engines.py", line 201, in create_engine
2020-06-09 20:35:50.144312 test_conn = _test_connection(engine, max_retries, retry_interval)
2020-06-09 20:35:50.144334 File "/usr/lib/python3/dist-packages/oslo_db/sqlalchemy/engines.py", line 376, in _test_connection
2020-06-09 20:35:50.144355 return engine.connect()
2020-06-09 20:35:50.144377 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2209, in connect
2020-06-09 20:35:50.144397 return self._connection_cls(self, **kwargs)
2020-06-09 20:35:50.144419 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 103, in __init__
2020-06-09 20:35:50.144438 else engine.raw_connection()
2020-06-09 20:35:50.144461 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2306, in raw_connection
2020-06-09 20:35:50.144480 return self._wrap_pool_connect(
2020-06-09 20:35:50.144502 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 2276, in _wrap_pool_connect
2020-06-09 20:35:50.144521 return fn()
2020-06-09 20:35:50.144543 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 303, in unique_connection
2020-06-09 20:35:50.144628 return _ConnectionFairy._checkout(self)
2020-06-09 20:35:50.144666 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 760, in _checkout
2020-06-09 20:35:50.144687 fairy = _ConnectionRecord.checkout(pool)
2020-06-09 20:35:50.144711 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 492, in checkout
2020-06-09 20:35:50.144730 rec = pool._do_get()
2020-06-09 20:35:50.144755 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/impl.py", line 139, in _do_get
2020-06-09 20:35:50.144815 self._dec_overflow()
2020-06-09 20:35:50.144845 File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
2020-06-09 20:35:50.144866 compat.reraise(exc_type, exc_value, exc_tb)
2020-06-09 20:35:50.144902 File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 153, in reraise
2020-06-09 20:35:50.144926 raise value
2020-06-09 20:35:50.144949 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/impl.py", line 136, in _do_get
2020-06-09 20:35:50.144969 return self._create_connection()
2020-06-09 20:35:50.144992 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 308, in _create_connection
2020-06-09 20:35:50.145011 return _ConnectionRecord(self)
2020-06-09 20:35:50.145034 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 437, in __init__
2020-06-09 20:35:50.145054 self.__connect(first_connect_check=True)
2020-06-09 20:35:50.145076 File "/usr/lib/python3/dist-packages/sqlalchemy/pool/base.py", line 639, in __connect
2020-06-09 20:35:50.145095 connection = pool._invoke_creator(self)
2020-06-09 20:35:50.145117 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/strategies.py", line 114, in connect
2020-06-09 20:35:50.145137 return dialect.connect(*cargs, **cparams)
2020-06-09 20:35:50.145159 File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 482, in connect
2020-06-09 20:35:50.145178 return self.dbapi.connect(*cargs, **cparams)
2020-06-09 20:35:50.145201 File "/usr/lib/python3/dist-packages/pymysql/__init__.py", line 94, in Connect
2020-06-09 20:35:50.145220 return Connection(*args, **kwargs)
2020-06-09 20:35:50.145242 File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 253, in __init__
2020-06-09 20:35:50.145262 self.ctx = self._create_ssl_ctx(ssl)
2020-06-09 20:35:50.145284 File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 330, in _create_ssl_ctx
2020-06-09 20:35:50.145303 ca = sslp.get('ca')
2020-06-09 20:35:50.145389 AttributeError: 'str' object has no attribute 'get'
To manage notifications about this bug go to:
https://bugs.launchpad.net/oslo.db/+bug/1882844/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list