The placement API will initially host resource provider
information and then will grow to provide a full placement
service. Eventually it will be fully extracted from Nova.
To facilitate that extraction, this service is being developed
with few ties to existing nova.wsgi structures. Instead it
uses relatively plain WSGI apps that are:
* uses the Routes library with declarative mapping defined in
ROUTE_DECLARATIONS
* basic wsgi apps, with webob and the request class, for each handler
define as functions
* does not use a paste-ini file to compose middleware, instead code
which minimally inspects the oslo config to know how to adjust
middleware (in the initial case choosing an auth_strategy)
Many of these "features" will be demonstrated in commits that
follow this one that enable specific behaviors for resource
providers and their inventories.
In order to ensure that this change can be merged in an atomic
fashion it includes microversion support that was previously in its
own commit.
The microversion_parse library is used in a WSGI middleware
to parse incoming microversion headers and place the
determined value into the WSGI environment at the
'placement.microversion' key. Response headers are adjusted to
add the required outgoing headers as described in:
http://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html
If a client requests an invalid microversion, they will receive
a 400 response. If the microversion is of a valid form but not
available, they will received a 406 response. The format of that
response is dependent on the accept header of the request. If it
is JSON, the min and max available microversions are presented.
A request to '/' will return version discovery information.
Thus far nothing else is done with the microversion information.
It is there for when we need it in the future. For now everything
is version 1.0.
The groundwork for using gabbi to test the API is in place in
nova/tests/functional/api/openstack/placement. The gabbi tests
are included in the functional target. To run just the placement
tests it is possible to run 'tox -efunctional placement'.
Change-Id: Icb9c8f7a1fa8a9eac66c2d72f4b7e4efd4e1944f
Partially-Implements: blueprint generic-resource-pools
os-api-ref is released on pypi now, so we can move to using it instead
of our in tree version. All future extension fixes will happen over
there instead of here.
Change-Id: Iee4b9c94b8b66a5b0481dd0b15beda03328c4f31
Depends-On: I0e615d36a2e5a8fa0d83f20bdcc2c33ad868ebd5
Since reno is the new tool for Relnotes [1], we need to add it
to Nova and provide some Sphinx docs for Liberty and Mitaka.
Change-Id: Ibd74e62b6f36076dbec17dd146632fd42aad6eb2
Uses openstackdocstheme to match other content
Has a dependent change in project-config also so that
file will build to developer.openstack.org/compute
at https://review.openstack.org/#/c/231000/
Change-Id: Ic060a1e79e4b2f8695cb788ff4df018e0cfd3286
If we use oslo.db fixtures, we'll need the package or
the next version of oslo.db release will break us.
Closes-Bug: #1503501
Change-Id: I176c85551007d3d9e7de8896ad12e9b87ff278d8
This removes the one seqdiag that is in our docs which drops the whole
chain of sphinxcontrib-seqdiag which requires Pillow, which requires
that you have a C compiler and jpeg-dev package on your environment to
build documenation for a python project.
Change-Id: Ie7615d48b5524b5e5e1159a25c357f5b3f0eee0e
os-testr has a blacklist we can use to specify which
tests to avoid. It uses "testr run --parallel" so tests
are run in parallel as well. We also get rid of the
huge list of tests in tox.ini into a separate file.
<soap_box>
The reason for using a black list is that when new tests
are being added, they are automatically either fixed to
work under python34 or added to a well known list of
tests so whoever is working on python34 can try to fix
those tests over a period of time. Hoping really that
this black list shrinks over time quickly. This is also
a pool of low hanging tasks that folks when they have
some time to pull a few tests from here and fix them.
</soapbox>
Bumps number of tests executed from 5606 to 7206
Depends-On: Ib5e682d0380cf7bc5e288a1e4d125379b452fa92
Change-Id: Ib641bb0f7553eb7704b419b9d00f86174f6d831d
As discussed in the Liberty Design Summit "Moving apps to Python 3"
cross-project workshop, the way forward in the near future is to
switch to the pure-python PyMySQL library as a default.
https://etherpad.openstack.org/p/liberty-cross-project-python3
Change-Id: I590c26523f4dc8d14c45e61bb89555486629b64d
The diagrams were hard to read and update. Replaced them with
simplified diagrams and tables. I used the content as is. I looks
inconsistent to me, but should now be easier to change.
Partially implements: blueprint devref-refresh-liberty
Change-Id: I707e1a6ab69ef44448b66e8be007307b5d73eb06
This change adds a basic bandit config for Nova. It can be invoked
by running the tox environment for bandit;
tox -e bandit
This is intended as a starting point for using bandit with Nova
and it should be revisited to improve the testing as more is learned
about the specific needs of the Nova code base.
Tox is configured to only show results for high and medium severity
results.
https://wiki.openstack.org/wiki/Security/Projects/Bandit
Change-Id: I3026b81317f0a6322acfc94784899a7453af586f