Files
nova-specs/specs/liberty/implemented/make-resource-tracker-use-objects.rst
Michael Still 30d5bacb19 Mark liberty specs as implemented
This review syncs the state of launchpad with the spec repo for
things implemented up to liberty-3. There are no changes to the
specs, just things being moved around.

Change-Id: I930d33532b268b6e933c8be06a0569c20fd09586
2015-09-30 10:17:33 +10:00

159 lines
4.1 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Make Resource Tracker Use Objects
==========================================
https://blueprints.launchpad.net/nova/+spec/make-resource-tracker-use-objects
This blueprint was approved for Kilo but some patches missed the feature
freeze. This proposal is to complete the remaining patches in Liberty.
Nova is converting data structures it uses to communicate via RPC and through
the database to use an object encapsulation called Nova Objects. This supports
of multi-versioning for live-upgrade and database schema independence. This
blueprint covers the conversion of the resource tracker to use Nova Objects.
Problem description
===================
Conversion to Nova Objects will replace dict data structures that are currently
communicated via the conductor API with Nova Object versions. Where necessary
the Nova Objects will be extended to cover parameters that are not already
implemented.
Use Cases
---------
As an operator I want to be able to upgrade Nova without any downtime.
Project Priority
----------------
This blueprint fits under the Live Upgrades priority.
Proposed change
===============
The Nova Object classes that will be used include:
- ComputeNode
- Instance
- Migrations
- Flavor
- Service
- PciDevicePool
The ComputeNode object was modified during the Kilo cycle to include
required fields. A small amount of cleanup is needed around the
PciDevicePool object to correct assignment of tags and the API samples
and tests associated with the os-pci API. PciDevicePool is used
in the ComputeNode object so this is required before finally replacing
compute node data structures in the resource tracker with the ComputeNode
object.
The other objects were added to the resource tracker during Kilo.
Alternatives
------------
None.
Data model impact
-----------------
The objects isolate the code from the database schema. They are written to
operate with existing data model versions. At present the scheduler does not
the ComputeNode object, so code there will need to tolerate changes in
database schema or the format of data stored in fields.
REST API impact
---------------
None. The current tests and API samples for pci stats are incorrect and
will be fixed. This does not change the relvant API, so although the
samples change, the API doesn't.
Security impact
---------------
None.
Notifications impact
--------------------
None.
Other end user impact
---------------------
None.
Performance Impact
------------------
None.
Other deployer impact
---------------------
The objects are written to be compatible with the database schema used in
Juno. There is no database migration associated with the remaining
changes in this blueprint and the format of data stored in the fields of
the database will not change. This means that a combination of Kilo and
Liberty versions of the compute nodes will be able to coexist and interact
with the scheduler.
Developer impact
----------------
Developers working on the resource tracker will be required to use the new
objects instead of directly making database calls to conductor.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
pmurray
Work Items
----------
These are the remaining work items left to complete the blueprint.
* Use ComputeNode object in resource tracker
Some of these work items are currently ready for review:
https://review.openstack.org/#/q/topic:bp/make-resource-tracker-use-objects,n,z
Dependencies
============
None
Testing
=======
This does not affect existing tempest tests. Unit tests will be
added for each object and existing tests will be modified to deal
with the new data structure.
Documentation Impact
====================
The os-pci API response samples will be correct. There will be no new feature
and the APIs will not change, but API samples appear in the documentation so
this will cause a minor documentation impact.
References
==========
https://blueprints.launchpad.net/nova/+spec/scheduler-lib