Move to oslo_db

Replace the trove.db.sqlalchemy package with the oslo_db library.

Launchpad Blueprint: https://blueprints.launchpad.net/trove/+spec/move-to-oslo-db

Problem Description

The current code uses the outdated incubator package for database connectivity. The old package has some bugs such as not handling concurrent threads correctly. This is a good opportunity to migrate to the oslo_db library, replacing the trove.db.sqlalchemy package.

A similar move has been done by other OS projects such as nova 1.

Proposed Change

oslo_db is a library that handles the common database connection and controls. Change the trove.db.sqlalchemy engine and session handling to use the oslo_db library. This transparently handles connections and sessions, and protects against mismanaged connections in Trove’s threaded environment.

The only external effect will be the exposure of oslo_db configuration options.

Configuration

Add the configuration options for oslo_db to the [database] section 2.

Database

The database connection is the only change. Data models and queries are not affected.

Public API

N/A

Public API Security

N/A

Python API

N/A

CLI (python-troveclient)

N/A

Internal API

N/A

Guest Agent

N/A

Alternatives

Determine the root cause of the database connection mismanagement 3. Previous efforts were unsuccessful.

Dashboard Impact (UX)

TBD (section added after approval)

Implementation

Remove the engine and session management code and replace it with a facade from oslo_db.

Assignee(s)

Matthew Van Dijk

Milestones

Mitaka-1

Work Items

  • A single task for code changes

  • Update docs with the new configuration settings

Upgrade Implications

N/A

Dependencies

oslo_db

Testing

Do not break existing tests - especially the fake mode tests.

Documentation Impact

Describe the config variables that are in the database section.

Appendix

None