Return python dictionaries from SQLAlchemy driver

Registered by Brian Lamar

Currently Nova utilizes a database abstraction layer (nova.db.api) which, in theory, allows for different backends to be utilized instead of SQLAlchemy. This is an ambitious goal which currently will not work as implemented.

`nova.db.api` contains functions which return the output of `nova.db.api.<driver>.api`. In the case of the SQLAlchemy driver, SQLAlchemy object are returned containing information which is pertenant to the original request. These SQLAlchemy object, for the most part, look and act like plain python dictionaries, but they have many potential side-effects and errors which can occur.

It is for that reason that a decision must be made to either:

a) Return 100% pure python dictionaries containing relevant data
b) Create an additional object abstraction layer for standardized object which can be returned from the `nova.db.api` module
c) Remove the compatibility layer and 100% commit to handling of SQLAlchemy errors at every level of the project

The easiest and most straight-forward solution is (a), but it disallows the use of lazy-loading and other 'efficiencies' that SQLAlchemy offers. (b) is the most difficult and comprehensive option. (c) is not an option in my mind.

Blueprint information

Status:
Complete
Approver:
Vish Ishaya
Priority:
Undefined
Drafter:
Nova Database Team
Direction:
Approved
Assignee:
Nova Database Team
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Vish Ishaya

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.