DiskFile and DatabaseBroker as a Public API

Registered by Peter Portante

From the OpenStack Summit talk given by Pete Zaitcev on the state of the LFS patch, it became clear that the community would like to define an internal API to allow different backend implementations for how the object, container and account servers behave.

We propose the existing DiskFile class (swift/obj/server.py) be defined as the internal backend API for the object server, and the ContainerBroker and AccountBroker classes (swift/common/db.py) be the backend API for the container and account servers respectively. Some work needs to be done to define how replacement classes are specified and if the existing APIs defined by those classes need adjustments.

Blueprint information

Status:
Started
Approver:
None
Priority:
Undefined
Drafter:
Peter Portante
Direction:
Needs approval
Assignee:
Peter Portante
Definition:
New
Series goal:
None
Implementation:
Good progress
Milestone target:
milestone icon ongoing
Started by
John Dickinson

Related branches

Sprints

Whiteboard

Doc for DB Broker:
https://raw.github.com/zaitcev/swift-lfs/master/doc/source/lfs_plugin.rst
 - incorporates DiskFile parts 2013/7/11
 - Gerrit review of initial work to pull about DatabaseBroker implemenation details: https://review.openstack.org/#/c/43985/

Doc for DiskFile:
    Proposed API comparing current, 1st iteration, 35381 and 43973 gerrit reviews (view in raw
    mode on a wide screen):
        https://gist.github.com/portante/5488238

Gerrit review of API proposal:
https://review.openstack.org/30051
 - including DiskFile.usage and TODO in commit message

Gerrit review of pre-API work:
https://review.openstack.org/#/c/35381/
https://review.openstack.org/#/c/43973/

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.