Unified Object Model
We need a unified notion of an object which can be passed over RPC while retaining rich functionality, localized (de-)serialization code, and lazy-loading of additional data directly from the DB or over RPC. This will provide the basis for versioned object support in the future.
Blueprint information
- Status:
- Complete
- Approver:
- Russell Bryant
- Priority:
- High
- Drafter:
- None
- Direction:
- Approved
- Assignee:
- Dan Smith
- Definition:
- Approved
- Series goal:
- Accepted for havana
- Implementation:
-
Implemented
- Milestone target:
-
2013.2
- Started by
- Chris Behrens
- Completed by
- Dan Smith
Related branches
Related bugs
Sprints
Whiteboard
More detailed proposal for the whole thing here:
https:/
Gerrit topic: https:/
Addressed by: https:/
Add base object model
Addressed by: https:/
Add instance object
Addressed by: https:/
Make a few places tolerant of sys_meta being a dict
Addressed by: https:/
WIP: Use Instance Objects for Start/Stop
Addressed by: https:/
WIP: Lists of instance objects
Addressed by: https:/
WIP: Use InstanceList object for init_host
Addressed by: https:/
Make pylint ignore nova/objects/
Addressed by: https:/
Add fake_instance.py
Addressed by: https:/
Make xenapi/host use instance objects for _uuid_find
Addressed by: https:/
Make xenapi use Instance object for host_maintenanc
Addressed by: https:/
Remove unused methods from VirtAPI
Addressed by: https:/
Make sync_power_state routines use InstanceList
Addressed by: https:/
Make instance object tolerate isotime strings
Addressed by: https:/
Make object actions pass positional arguments
Addressed by: https:/
Make the datetime utility function coerce to UTC
Addressed by: https:/
Add Instance.info_cache
Addressed by: https:/
Add base mixin class for object lists
Addressed by: https:/
Fix sys_meta access in prep for instance object
Addressed by: https:/
Add BlockDeviceMapping objects
Addressed by: https:/
Add deleted flag to NovaObject base
Addressed by: https:/
Fix obj_load() in NovaObject base class
Addressed by: https:/
Unregister test objects when finished
Addressed by: https:/
Make NovaObject support extra attributes in items()
Addressed by: https:/
Remove straggling use of all-kwarg object methods
Addressed by: https:/
Use InstanceList for _heal_instance_
Addressed by: https:/
Remove a layer of nesting in _poll_unconfirm
Addressed by: https:/
Make _poll_unconfirm
Addressed by: https:/
Fix importing InstanceInfoCache during register_all()
Addressed by: https:/
Fix orphaned instance from get_by_uuid() and _from_db_object()
Addressed by: https:/
Fix serialization of iterable types
Addressed by: https:/
Add basic SecurityGroup model
Addressed by: https:/
Add Instance.
Addressed by: https:/
Fill context on objects in lists
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Fix metadata access in prep for instance objects
Addressed by: https:/
Make InstanceList filter non-column extra attributes
Addressed by: https:/
WIP Make instance show and index use objects
Addressed by: https:/
Add basic InstanceFault model
Addressed by: https:/
Add Instance.fault
Addressed by: https:/
Make NovaObject support the 'in' operator
Addressed by: https:/
Fix instance object's use of a db query method parameter
Addressed by: https:/
Make info_cache not break network_info
Addressed by: https:/
Prepare fake instance stubs for objects
Addressed by: https:/
Make fake_network tolerant of objects
Addressed by: https:/
Refactored compute/
Gerrit topic: https:/
Addressed by: https:/
Refactor db.security_
Addressed by: https:/
Add obj_to_dict() to recursively convert objects to dicts
Addressed by: https:/
DNM Make to_primitive() serialize netaddr.IPAddress
Addressed by: https:/
Add update() method to NovaObject for dict compatibility
Gerrit topic: https:/
Addressed by: https:/
Add Instance.
Addressed by: https:/
Break out compute API unit tests
Addressed by: https:/
Break out Compute Manager unit tests
Addressed by: https:/
Convert pause/unpause to use objects
Addressed by: https:/
Convert suspend/resume to use objects
Gerrit topic: https:/
Addressed by: https:/
Add object (de)serialization support to cells
Addressed by: https:/
Add cells get_cell_type() method
Addressed by: https:/
Add expected_vm_state to Instance.save()
Addressed by: https:/
Prep Instance.save() to handle cells DB updates
Addressed by: https:/
Unit-ify compute_api delete tests
Addressed by: https:/
Fix default argument values on get_all_
Addressed by: https:/
Add _set_instance_
Addressed by: https:/
Make notifications properly string-convert instance datetimes
Addressed by: https:/
Update v3 servers API with objects changes
Addressed by: https:/
Make db/api strip timezones for datetimes
Addressed by: https:/
Make compute_
Addressed by: https:/
Fix object_compat decorator for non-kwargs
Addressed by: https:/
WIP Make delete/soft_delete use objects
Addressed by: https:/
Make compute_api.get() use objects natively
Addressed by: https:/
Make InfoCache.
Addressed by: https:/
Better start/stop handling for cells
Addressed by: https:/
Make servers::update() use Instance.save() to do the work
Addressed by: https:/
Make admin API state resets use Instance.save()
Addressed by: https:/
Move special cells logic for start/stop
Addressed by: https:/
Convert network API to use InfoCache object
Addressed by: https:/
Make Instance object properly update *metadata
Addressed by: https:/
Fix Instance object handling of implied fields
Addressed by: https:/
Fix shelve's use of system_metadata
Addressed by: https:/
Make shelve pass old-world instance object to conductor
Addressed by: https:/
Fix change detection logic in conductor
Addressed by: https:/
Enhance object inheritance
Addressed by: https:/
Split NovaObject into 2 base classes
Addressed by: https:/
Add new-world Quota object
Addressed by: https:/
Make _provision_
Addressed by: https:/
Switch delete to use new-world Quotas object
Addressed by: https:/
Pass objects for revert and confirm resizes
Addressed by: https:/
Make compute_api use Migration object
Addressed by: https:/
Make compute_api migrate/resize paths use instance objects
Addressed by: https:/
Add scheduler utils unit tests
Addressed by: https:/
Fixup some non-unity-ness to conductor tests
Addressed by: https:/
Unit-ify the compute API resize tests
Addressed by: https:/
Convert admin_actions ext tests to unit tests
Addressed by: https:/
Add Migration object
Addressed by: https:/
Deprecate conductor migration_create()
Addressed by: https:/
Move prep_resize paths to use objects
Addressed by: https:/
Make compute_api use objects for lock/unlock
Addressed by: https:/
Fix prep_resize() stale system_metadata issue
Addressed by: https:/
Make backup and snapshot use objects
Addressed by: https:/
Convert reset_network to use instance object
Addressed by: https:/
Make inject_network_info use objects
Addressed by: https:/
Change resize_instance paths to use objects
Addressed by: https:/
Change finish_resize paths to use objects
Addressed by: https:/
Convert _poll_unconfirm
Addressed by: https:/
Change finish_
Addressed by: https:/
Deprecate conductor migration_get()
Addressed by: https:/
Fix instance metadata access in xenapi
Gerrit topic: https:/
Addressed by: https:/
Fixes auto comfirmation failed because db access
Work Items
Dependency tree

* Blueprints in grey have been implemented.