We have no schemas yet and thus nothing to use this, but we enable it in
our tests for when we start adding these.
Change-Id: I160ee724459403a10516a356ee860831545d7d65
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
We already handled request bodies. Now we tackle query parameters. Note
that we're only handling GET requests currently since these are the APIs
where query parameters are most likely to be present. A future change
will add a test to verify that all methods handling GET requests have
schemas present.
This patch might look huge but every one of these schemas is effectively
a no-op since they're empty and have 'additionalProperties = True'. This
means there are lots of TODOs left in here which would be nice to tackle
in a future API microversion.
Change-Id: I80fc84df7c2be908856e6d4033b4922d7b0e9af1
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
There's no reason to inspect the API version requested (and reject
things if unset) if we don't have version constraints on the API
resource. This lets us add schema decorators to unversioned API
resources (i.e. the "versions" API at '/').
Change-Id: Ib4d4585e3e4664eba8cd3daa47b4349eb2bfed74
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
For APIs and resource actions that have been wholly removed and now
return a HTTP 4xx request regardless of microversion.
Change-Id: Ie3e90f4628dab4cc3e5983e0e8d8799dcf0465d8
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Latest Zuul drops the following warnings:
All regular expressions must conform to RE2 syntax, but an
expression using the deprecated Perl-style syntax has been detected.
Adjust the configuration to conform to RE2 syntax.
The RE2 syntax error is: invalid perl operator: (?!
This patch replaces the 'irrelevant-files' to 'files' with explicitly
listing the pattern which files should be the tests run against.
Change-Id: If287e800fb9ff428dbe6f9c4c046627f22afe3df
OpenAPI 3.1 is a superset of JSON Schema Draft 2020-12. As a result, we
wish to migrate our current schemas to this. There are a couple of
issues to address:
- 'exclusiveMinimum' is now an integer and allows you to define an
minimum for an exclusive range, to complement 'minimum' which is used
for an inclusive range. We can drop it and use 'minimum' with a larger
number (since draft 6 [1]).
- 'integer' types can now accept a fractional part but only if it's zero
(i.e. '1.0' is permissible, '1.1' is not) (since draft 6 [1]).
- 'items' has been replaced with 'prefixItems' for describing the format
of an array item (since draft 2020-12 [2])
[1] https://json-schema.org/draft-06/json-schema-release-notes
[2] https://json-schema.org/draft/2020-12/release-notes
Change-Id: I1486701786960eef95c5c42674bff1b2d7d686e2
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Validate the validation by validating our schemas against the JSON
Schema meta schema. This is an important first step in getting us
of JSON Schema Draft 4 and onto Draft 2019-09, which OpenAPI is a
superset of.
Change-Id: I3b5a05aa0aa058e92c6927c9e3bee3cdd4477f8f
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
None of these should affect us at runtime but they are not technically
valid against JSON Schema Draft 4.
Change-Id: Iaae8998a34ff812b9f76a0cd1fa9be4555c89b98
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
The idea here is to test that we are doing schema validation against
all routes that accept a request body (i.e. POST, PUT, PATCH). We can
use these schemas down the line to generate OpenAPI docs like all the
cool kids do.
Change-Id: Icdf20e7e5b38c9f5324eac39ec1d6327609bf6d4
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This provides us a path to generate OpenAPI schemas for the nova API.
Thankfully most of the API documentation is pretty darn simple. Note
that we need to fix a lot of unit tests so that they pass correct bodies
to the controller methods under test. Also note that the
'reset_server_state' module in 'nova.api.openstack.compute.schemas' is
renamed to 'admin_actions' to match the name of the module containing
the controller itself, as is the case for all other schemas.
Change-Id: I39098fb621b120589ed6a923ce64207ee26e91aa
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
These are deprecated but there's value in having a proper - if loose -
schema in place for API documentation purposes. Also, doing things this
way allows us to remove a whole load of hand-rolled stuff.
Change-Id: I4106cfa2a09d135f12892ed6d1f42f4151dc72e4
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This change adds a retry_if_busy decorator
to the read_sys and write_sys functions in the filesystem
module that will retry reads and writes up to 5 times with
an linear backoff.
This allows nova to tolerate short periods of time where
sysfs retruns device busy. If the reties are exausted
and offlineing a core fails a warning is log and the failure is
ignored. onling a core is always treated as a hard error if
retries are exausted.
Closes-Bug: #2065927
Change-Id: I2a6a9f243cb403167620405e167a8dd2bbf3fa79
This change increases the swap in the emulation job form
1G to 8G
This change updates the default cirrors image form 0.5.2
to 0.5.3 to avoid know kernel bugs
this change reduces the tb_cache_size: to 128
The tempest concurrency is reduced to 4 to avoid
no valid host error in the resize tests
Change-Id: Ic1dde3d54f5ca12408ef53218773a27d55760705
This address review feedback on change
I7e1d10e66a260efd0a3f2d6522aeb246c7582178 to add some clarifying text
to the docs and release note.
Related to blueprint persistent-mdevs
Change-Id: I472552c64cc2c2ce06896158664faac0199d90bd
--before argument is currently described in ambiguous way: it
is not actually used to filter entries ARCHIVED before specified
date. Instead, it compares provided data with "deleted_at" value
for most rows and "updated_at" or "created_at" for remaining ones.
Since we already talk about time of deletion when describing
--before argument of "nova-manage db archive_deleted_rows" rows,
it make sense to not provide extra details here as well.
Change-Id: Ib5940e88a52dc8d32303e27237e567c3481fc3dc
Today if the write sys call to offline a cpu when
deleting an instnace fails due to an OSERROR or ValueERROR
the instance delete fails and the instance goes to error.
as reported in bug: #2065927 this can happen as a result of
OSError: [Errno 16] Device or resource busy if the vm is
deleted shortly after its started.
Related-Bug: #2065927
Change-Id: I1352a3a1e28cfe14ec8f32042ed35cb25e70338e
change I6de86f3e3e283ba404f927ea4c8164f791df3989
added the py312 funtional job definition but did not
update the tox.ini to define it.
As a result it is runing the unit tests not the functional tests.
This change simpley corrects that.
Change-Id: Id6ee76e0190469ac09baf0bc56a9022317c6f881
This reverts us back to using the standard disk image for most of our
tests, which is more representative of how people actually use nova.
This leaves the UEC image on a few jobs for the sake of comparison
data for the time being, and because we should actually test that
code path if we're going to say we support it.
Change-Id: I16ed92d342464325d4bef33c1e22b328bcfbe7d6
This uses the OCaaS feature in devstack which saves *minutes* of time
running devstack by effectively caching the openstackclient startup
instead of taking that hit for every invocation.
Change-Id: I78308128c6249f7f871e0231ce717b1ec0f88509
The admin docs are missing some details about enabling unified limits,
like oslo.limit configuration and Keystone roles. This adds more
information about what roles are needed for what actions, how to set
quota limits, quota enforcement, and unified limits in general.
This also removes a couple of tables from the user docs that show
obsolete/deprecated quota limits because they may be more confusing
than helpful considering we don't want new deployments to use them and
they add more clutter to the page.
More info is also added regarding the CLI commands for unified limits
and makes it consistent between the user and admin docs.
Change-Id: Id93f9997d1b217e0c2151c88323564f7a7fefc02
This hacking test has a syntax error in it. On older pythons, this
does not prevent us from finding the second popen() use, but on
python 3.12 it does.
Change-Id: Ib74dc030118e0cb9fab548b112d32ce080969a15
Python 3.12 changes the repr() syntax for the OrderedDict object,
which causes us to calculate different hashes for the notification
objects across the version gap. The get_extra_data() function wraps
a dict in OrderedDict after sorting the elements of the original dict,
but that is not entirely necessary. The sorted() list of dict.items()
is a perfectly reasonable representation of the things it is capturing,
so we can just eliminate the use of OrderedDict there and thus end
up calculating the same hashes on <3.12 and >3.12.
NOTE: This changes a bunch of the hashes of notification objects
without bumping or changing versions. This is expected purely because
we are changing the hashing method, and thus this is not a violation
or upgrade concern.
Change-Id: I242150138deed7fe74b13d9c44b333293cd24ffa
The str(url) function in SQLAlchemy hides the password.
For a URL string that is to be re-used, use
render_as_string(hide_password=False).
Change-Id: I2ab28da5cc2b9ed3a1588259b2e94320662816bb