Use oslo-versioned-objects to help with dealing with upgrades

Registered by yuntongjin

The goal of this blueprint is to introduce objects into Manila.

An object is used to bundle data with methods that can operate on them. The plan is to represent the following concepts as objects: service, ManilaNode, Quota, ProjectUserQuota, ProjectUserQuota, QuotaClass,Reservation, Share,ShareExportLocations,
ShareTypes,ShareTypeProjects,ShareTypeExtraSpecs,ShareMetadata,ShareAccessMapping,ShareSnapshot,SecurityService,ShareNetwork,ShareServer,ShareServerBackendDetails,ShareNetworkSecurityServiceAssociation and NetworkAllocation.

By using objects, the code will be insulated from the actual database schema, making it easier rolling upgrades. Objects can be used to pass data over RPC and allow lazy-loading of data directly from the database or over RPC.

Nova has come up with the idea of versioned objects, that Ironic has also now used. This has now been proposed as an oslo library: https://review.openstack.org/#/c/127532/
https://etherpad.openstack.org/p/kilo-crossproject-upgrades-and-versioning

There is work being done in Heat and Cinder which may be a good starting point for Glance (ideas, reliability):
https://blueprints.launchpad.net/heat/+spec/versioned-objects
https://blueprints.launchpad.net/cinder/+spec/cinder-objects

The idea of versioned objects is to create wrapper objects that are a layer above the db objects.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Medium
Drafter:
yuntongjin
Direction:
Approved
Assignee:
weiting-chen
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Goutham Pacha Ravi

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/versioned-objects,n,z

Addressed by: https://review.openstack.org/173692
    First objects - ShareExportLocation

Addressed by: https://review.openstack.org/174706
    Versioned objects - SecurityService

Addressed by: https://review.openstack.org/184736
    Implement versioned object for Share

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.