Document review priorities for Ocata

This is based on the review priorities session held
at the Ocata summit in Barcelona.

Change-Id: Idc1d5add88e2ed95a43e34ade526e25229fe2bb8
This commit is contained in:
Matt Riedemann 2016-11-29 17:34:58 -05:00
parent 15a0da1190
commit 3d4418d40a
1 changed files with 123 additions and 1 deletions

View File

@ -4,4 +4,126 @@
Ocata Project Priorities
========================
TODO: fill this in after summit
List of efforts the Nova development team is prioritizing for reviews in the
Ocata release (in no particular order).
+-------------------------------------------+-----------------------+
| Priority | Primary Contacts |
+===========================================+=======================+
| `Cells V2`_ | `Dan Smith`_ |
| | `Melanie Witt`_ |
+-------------------------------------------+-----------------------+
| `Resource Providers`_ | `Jay Pipes`_ |
| | `Sylvain Bauza`_ |
| | `Chris Dent`_ |
+-------------------------------------------+-----------------------+
| `API Improvements`_ | `Alex Xu`_ |
| | `Kevin Zheng`_ |
+-------------------------------------------+-----------------------+
| `Network Aware Scheduling`_ | `John Garbutt`_ |
+-------------------------------------------+-----------------------+
.. _Dan Smith: https://launchpad.net/~danms
.. _Melanie Witt: https://launchpad.net/~melwitt
.. _Jay Pipes: https://launchpad.net/~jaypipes
.. _Sylvain Bauza: https://launchpad.net/~sylvain-bauza
.. _Chris Dent: https://launchpad.net/~cdent
.. _Alex Xu: https://launchpad.net/~xuhj
.. _Kevin Zheng: https://launchpad.net/~zhengzhenyu
.. _John Garbutt: https://launchpad.net/~johngarbutt
Cells v2
--------
A single cells v2 deployment was made possible in the Newton release, and CI
testing was added, but cells v2 was still optional as of Newton.
In Ocata, the goal is to support multiple cells v2 cells in a deployment. There
are several priority efforts to get us there.
* `Scheduler interaction for cells v2`_: This moves instance creation to the
nova-conductor service so that when the scheduler picks a host, the instance
is built in a specific cell. There are no plans in Ocata to support rebuilds
or other instance move operations, i.e. migrations, between cells.
* `Quotas in the API cell`_: The quotas tables have moved to the API database
but we want to avoid an 'up-call' from the compute cells to the API when
handling quota commits and rollbacks. With cells v2 we have an opportunity to
rethink how Nova supports counting resources and tracking quota, so this
effort aims to move quota handling to a more simplified solution which is
more eventually consistent and avoids invalid over-quota failures by design.
* Support a simple python merge operation when sorting and/or filtering a list
of instances across multiple cells. Long-term this should be handled by
`Searchlight`_ but for Ocata we will have a simple but albeit less performant
solution.
* Continuous integration testing with cells v2 enabled by default. We aim to
make cells v2 required in Ocata deployments, and to get there we need to have
the community CI jobs running with cells v2. This will require changes to
grenade for upgrade testing and also testing multiple cells v2 cells with the
multinode job.
.. _Scheduler interaction for cells v2: ../specs/ocata/approved/cells-scheduling-interaction.html
.. _Quotas in the API cell: ../specs/ocata/approved/cells-count-resources-to-check-quota-in-api.html
.. _Searchlight: http://docs.openstack.org/developer/searchlight/
Resource Providers
------------------
* `Placement / Scheduler interaction`_: The Nova Filter Scheduler will make
requests to the placement API for simple compute node resources such as VCPU,
RAM and disk. This allows the scheduler to offload that work to the placement
service rather than query all compute nodes from the Nova database and then
iterate those potential hosts through all of the python filters. The
placement service can optimize by performing the compute node resource
provider filtering with SQL queries directly.
* `Handle aggregate resources`_: This is continuing work from Newton where we
need to be able to model resource provider aggregates for things like shared
storage and IP allocation pools. Then the resource tracker in the compute
nodes can pull this information from the placement service when a request is
made for shared storage in a compute node within a particular aggregate. The
allocation claim is then made on the resource provider rather than the
compute node.
* `Custom resource classes`_: A REST API will be provided for working with
resource classes and creating custom resource classes which will be used when
creating inventory and allocation records for Ironic nodes.
.. _Placement / Scheduler interaction: ../specs/ocata/approved/resource-providers-scheduler-db-filters.html
.. _Handle aggregate resources: ../specs/newton/implemented/generic-resource-pools.html
.. _Custom resource classes: ../specs/ocata/approved/custom-resource-classes.html
API Improvements
----------------
These improvements are a priority because of their relation to being able to
sort and filter instances across multiple cells.
* `Query parameter validation`_: The v2.1 API already uses json schema
to validate request bodies but request parameters are validated in code,
sometimes inconsistently, and without microversion support. This effort will
add json schema validation to request query parameters and allow the schema
to change with microversions over time.
* `Limit instance sort/filter parameters`_: For administrators, sort and filter
parameters are passed through to the DB API. This has a number of problems
such as the filter parameters may be on columns that are not indexed and as
such the query may have poor performance. The columns may also be on joined
tables where sorting and filtering does not make sense. So this effort is to
restrict the sort and filter parameters when listing instances to a known
good set which could be expanded later if needed using microversions.
.. _Query parameter validation: ../specs/ocata/approved/consistent-query-parameters-validation.html
.. TODO(mriedem): Replace the gerrit review link with a spec once merged.
.. _Limit instance sort/filter parameters: https://review.openstack.org/#/c/393205/
Network Aware Scheduling
------------------------
In Newton we started refactoring the internal Neutron v2 API code such that
port create and update operations were decoupled. Port update is where the host
binding happens. The `goal is to move`_ these operations out of the
nova-compute service and into the nova-conductor service, where the placement
service can eventually be used with IP allocation pools (for Neutron routed
networks), and to also make a port binding or build failure less expensive from
which to recover as it will be centrally managed in the conductor service
rather than on each compute. Supporting Neutron routed networks is a dependency
for using Neutron with multiple cells.
.. _goal is to move: ../specs/ocata/approved/prep-for-network-aware-scheduling-ocata.html