Commit Graph

374 Commits

Author SHA1 Message Date
Matt Riedemann 763fd62464 Add policy rule to block image-backed servers with 0 root disk flavor
This adds a new policy rule which defaults to behave in a
backward compatible way, but will allow operators to enforce
that servers created with a zero disk flavor must also be
volume-backed servers.

Allowing users to upload their own images and create image-backed
servers on local disk with zero root disk size flavors can be
potentially hazardous if the size of the image is unexpectedly
large, since it can consume the local disk (or shared storage pool).

It should be noted that disabling the new policy rule will
result in a non-backward compatible API behavior change and no
microversion is being introduced for this because enforcement via
a new microversion would not close the security gap on any previous
microversions.

Related compute API reference and user documentation is updated
to mention the policy rule along with a release note since
this is tied to a security bug, which will be backported to stable
branches.

Change-Id: Id67e1285a0522474844de130c9263e11868f67fb
Closes-Bug: #1739646
2018-06-15 17:10:11 -04:00
Zuul a1e01a247c Merge "Add trusted_image_certificates to REST API" 2018-06-14 12:01:50 +00:00
Brianna Poulos 8c7ca368b1 Add trusted_image_certificates to REST API
This change adds support for the trusted_image_certificates parameter,
which is used to define a list of trusted certificate IDs that can be
used during image signature verification and certificate validation. The
parameter may contain a list of strings, each string representing the ID
of a trusted certificate. The list is restricted to a maximum of 50 IDs.
The list of certificate IDs will be stored in the trusted_certs field of
the instance InstanceExtra and will be used to verify the validity of
the signing certificate of a signed instance image.

The trusted_image_certificates request parameter can be passed to
the server create and rebuild APIs (if allowed by policy):

* POST /servers
* POST /servers/{server_id}/action (rebuild)

The following policy rules were added to restrict the usage of the
``trusted_image_certificates`` request parameter in the server create
and rebuild APIs:

* os_compute_api:servers:create:trusted_certs
* os_compute_api:servers:rebuild:trusted_certs

The trusted_image_certificates parameter will be in the response
body of the following APIs (not restricted by policy):

* GET /servers/detail
* GET /servers/{server_id}
* PUT /servers/{server_id}
* POST /servers/{server_id}/action (rebuild)

APIImpact

Implements blueprint: nova-validate-certificates
Change-Id: Iedd3fea0e86648fae364f075915555dcb2c4f199
2018-06-13 15:52:59 -04:00
Matt Riedemann c8edb8ce72 api-ref: expand on various bdm parameters
Some of the block_device_mapping_v2 parameter descriptions
were lacking details on valid values, combinations, restrictions
and how things get linked together, for example, to get a swap
bdm. This fills in the details and re-words things in some
places for clarity.

The mention of the libvirt driver in the guest_format for
non-swap ephemeral block devices is removed since (1) it's
overly confusing and (2) API users shouldn't know or care
if the hypervisor running their server is libvirt or not.
The point is, if you want swap, ask for swap, and if you want
ephemeral, specify one of the other values. Then you get what
you get and you don't throw a fit.

Change-Id: Ia7e49f28e2f410ada5c2f4c2e3a13ffd97e54654
2018-06-12 19:09:07 -04:00
Zuul 8ede37e8b1 Merge "Remove the remaining of the removed option" 2018-05-22 20:03:06 +00:00
Ken'ichi Ohmichi 89b3286ebc Remove the remaining of the removed option
Since I8ae8507a089df4d0a32be5fbc615e2166f44516e the config option
multi_instance_display_name_template has been removed.
So this patch removes the remaining of the option.

Change-Id: I81fa2588d85c803415aadf6150ed6cdd7a0fe6d1
2018-05-22 15:56:44 +00:00
Zuul d78055df0e Merge "api-ref: Fix parameters for os-volume-attachments.inc" 2018-05-21 13:41:07 +00:00
Takashi NATSUME a676d2e6b2 api-ref: Fix parameters for os-volume-attachments.inc
In the following APIs, the 'volume_id' parameters are
'path' parameters. So fix them.

- GET /servers/{server_id}/os-volume_attachments/{volume_id}
- DELETE /servers/{server_id}/os-volume_attachments/{volume_id}

In addition, the descriptions of the parameters are amended.

Change-Id: Iab93acde31639b1471c83b06fb1a77474bb52c48
Closes-Bug: #1770560
2018-05-11 14:26:37 +09:00
jichen 1c3151dd43 [doc] Add soft_deleted flag
soft_deleted is support in query but we didn't mention in the doc

https://github.com/openstack/nova/blob/bcb405e871a447df57ea420402919a256f5d0be9/nova/db/sqlalchemy/api.py#L2127

Change-Id: I1c5577a501144170e82c96c04cffbf32dcaa5cff
Closes-Bug: 1765575
2018-05-09 14:41:30 +00:00
Zuul ceac5d5469 Merge "Add host/hostId to instance action events API" 2018-04-26 20:42:07 +00:00
Yikun Jiang c2f7d65858 Add host/hostId to instance action events API
This patch adds a new microversion to
``GET /servers/{server_id}/os-instance-actions/{req_id}`` API to
include the ``host`` field for admin and an ``hostId`` for all users
by default. And the display of newly added ``host`` field will be
controlled by the same policy as the ``traceback`` field.

The newly added fields can be used to determine on which host a
given action event occurred.

Part of blueprint: add-host-to-instance-action-events

Change-Id: I2f8b4a12a088b9ed96b428eafde2e0c478fb1db5
2018-04-26 14:17:02 +00:00
Matt Riedemann 048fa23100 api-ref: mark block_device_mapping_v2.boot_index as required
This was marked optional in change If57aa3e37 but it has
only been optional since Queens due to change I8a3e7e6c4,
before that you will get a 400 error if you do not provide
boot_index in the BDMs, e.g.:

2018-04-23 12:34:13,308 INFO [nova.api.openstack.wsgi] \
   HTTP exception thrown: Block Device Mapping is Invalid: \
   Boot sequence for the instance and image/block device \
   mapping combination is not valid.
2018-04-23 12:34:13,310 INFO [nova.api.openstack.requestlog] \
   127.0.0.1 "POST /v2.1/6f70656e737461636b20342065766572/servers"
   status: 400 len: 164 microversion: 2.1 time: 0.129485

One could argue that I8a3e7e6c4b72eb1c3707d54049d18dc29f606fe5
is a behavior change that should have gone with a microversion,
which if people agree with that, could be reverted separately.

Change-Id: I14d44dbc0b6a8fb25932c333e695cad9edaefbed
Closes-Bug: #1766306
2018-04-23 14:01:36 -04:00
Zuul c6d7d92c93 Merge "Add microversion to support extra_specs in flavor API." 2018-04-13 22:47:15 +00:00
Yikun Jiang 0baba40b1b Add microversion to support extra_specs in flavor API.
Exposes flavor extra_specs in the flavor representation since
microversion 2.61. Now users can see the flavor extra-specs
in flavor APIs response only and do not need to call
``GET /flavors/{flavor_id}/extra_specs`` API.

Flavor extra_specs will be included in Response body of the
following APIs:

* ``GET /flavors/detail``
* ``GET /flavors/{flavor_id}``
* ``POST /flavors``
* ``PUT /flavors/{flavor_id}``

Part of blueprint add-extra-specs-to-flavor-list

Change-Id: I048747633babf690a63c6de9773bff5547872053
2018-04-11 17:47:57 +08:00
Takashi NATSUME 39fbcfd518 api-ref: Parameter verification for servers.inc (3/3)
This patch completes parameter verification for servers.inc.

* Verifies remaining parameters
* Sorts parameters
* Adds missing parameters
* Removing unncessary parameters

Change-Id: If01b2dcfa9df8c0e80ad1da65115204fe321891b
Closes-Bug: #1738930
2018-04-11 00:33:52 +00:00
Takashi NATSUME bab3184ced api-ref: Parameter verification for servers.inc (2/3)
This patch verifies BDM, fault and scheduler hint parameters.
A subsequent patch will verify other parameters.

Change-Id: If57aa3e37ebaa6fa13718480bb216d10664aa5b1
Partial-Bug: #1738930
2018-04-11 00:33:40 +00:00
Takashi NATSUME 56283f167d api-ref: Parameter verification for servers.inc (1/3)
This patch verifies query parameters.
Subsequent patches will verify other parameters.

Change-Id: I6078c0c8ebc888dc120f446f228a3b0433b89a76
Partial-Bug: #1738930
2018-03-27 17:06:45 +09:00
Zuul 19829aa2e2 Merge "api-ref: Fix parameter type in server-migrations.inc" 2018-01-30 23:02:33 +00:00
Zuul 988f86374d Merge "Fix 'all_tenants' & 'all_projects' type in api-ref" 2018-01-27 11:32:08 +00:00
gaofei a9769a8488 Replace curly quotes with straight quotes
Sphinx's "smart quotes" feature will ensure these are replaced during
generation of docs.

Change-Id: I96412d86ac67c0dbaa0edb88815daa795e3cb1d8
2018-01-23 09:25:05 +00:00
ghanshyam 6a75cb2ef9 Fix 'all_tenants' & 'all_projects' type in api-ref
'all_tenants' and 'all_projects' are query param to
list the resources for all tenants/projects.

Checking of this query param in code is different in different APIs.
- GET /servers and /servers/detail API checks the value of 'all_tenants'
  strictly as boolean if there is one present.
- other APIs just checks the presence of it in req,
  like GET /os-server-groups, /os-fping

api-ref mentioned this param types as integer, boolean or string.

This commit make api-ref consistent to have type of this query param
as string.

Change-Id: I5297e6baa1e3d06adfc9d29d2bc56124119b9c8c
Closes-Bug: #1734427
2018-01-23 02:30:09 +00:00
Takashi NATSUME 312327b759 api-ref: Fix parameter type in server-migrations.inc
When the parameter is always 'null', it should be defined as 'none'.
So fix the parameter type of the 'force_complete'
in "Force Migration Complete Action" API.

And add an additional description for the action.

Change-Id: Ic0dd390a87d0d5a88d9a08fdaa9e59ee99f6e7c4
Closes-Bug: #1744688
2018-01-22 19:18:25 +09:00
Kevin_Zheng 92a0fc0b9f Add pagination and Changes-since filter support for os-migrations.
This patch adds pagination support and changes-since filter
for os-migrations API.

Users can now use 'limit' and 'marker' to perform paginate
query of running migrations list. Users can also filter the
results according to the migrations' updated time.

The ``GET /os-migrations`` and server migrations APIs will now
return a uuid value in addition to the migrations id in the response,
and the query parameter schema of the ``GET /os-migrations`` API no
longer allows additional properties.

Co-Authored-By: Yikun Jiang <yikunkero@gmail.com>

Implement: blueprint add-pagination-and-change-since-for-migration-list
Change-Id: I7e01f95d7173d9217f76e838b3ea71555151ef56
2018-01-10 14:02:53 -05:00
Kevin_Zheng 0c480d795f Add pagination and changes-since for instance-actions
This patch adds pagination support and changes-since filter
for os-instance-actions API.

Users can now use 'limit' and 'marker' to perform paginate
query of instance action list. Users can also filter the
results according to the actions' updated time.

Co-Authored-By: Yikun Jiang <yikunkero@gmail.com>

Implement: blueprint pagination-add-changes-since-for-instance-action-list

Change-Id: I1a1b39803e8d0449f21d2ab5ef96d4060e638aa8
2017-12-14 07:42:17 +00:00
Zuul 29e453df8e Merge "Deprecate file injection" 2017-12-13 21:08:27 +00:00
Matt Riedemann 126c3d4c78 Deprecate file injection
This microversion makes the following changes:

1. Deprecates personality files from POST /servers and the rebuild
   server action APIs.
2. Adds the ability to pass new user_data to the rebuild server
   action API.
3. Personality / file injection related limits and quota resources
   are removed from the limits, os-quota-sets and os-quota-class-sets
   APIs.

Implements blueprint deprecate-file-injection

Change-Id: Ia89eeb6725459c35369e8f790f68ad9180bd3aba
2017-12-12 09:22:21 -05:00
Takashi NATSUME 35dd1f9185 api-ref: Fix a description for 'guest_format'
There is a wrong format 'ephemeral' in the description.
So remove it and valid formats ('ext2', 'ext3', 'ext4' and 'xfs')
are added.
The parameter is optional, so fix it as well.

Change-Id: Icc04cac3a287955ab1a98b7813e3c7ec8183b120
Closes-Bug: #1736502
2017-12-12 04:53:32 +00:00
Zuul 54f45b530c Merge "Enable cold migration with target host(2/2)" 2017-11-30 07:38:03 +00:00
Takashi NATSUME d2ce4ca9ec Enable cold migration with target host(2/2)
This function enables users to specify a target host
when cold migrating a VM instance.

This patch modifies the migration API.

APIImpact
    Add an optional parameter 'host' in cold migration action.

Change-Id: Iee356c4dd097c846b6ca8617ead6a061300c83f8
Implements: blueprint cold-migration-with-target-queens
2017-11-29 20:48:16 -05:00
ghanshyam 37987ee385 Add 'all_tenants' for GET sec group api ref
GET /os-security-groups API accept 'all_tenants' [1]
as one of the query param to list all tenants sec groups.
But that is missing in api-ref [2]

..1
https://github.com/openstack/nova/blob/e9104dbaef9bbccc6b19811125d439fdf9558428/nova/network/security_group/neutron_driver.py#L178
https://github.com/openstack/nova/blob/e9104dbaef9bbccc6b19811125d439fdf9558428/nova/compute/api.py#L5096

..2 https://developer.openstack.org/api-ref/compute/#list-security-groups

Closes-Bug: #1734406

Change-Id: I2946f05716c9030f7880ac423cc64b49c04b2992
2017-11-28 05:37:15 +00:00
Zuul 1a289f1c02 Merge "api-ref: fix the type on the block_device_mapping_v2 parameter" 2017-11-23 00:07:30 +00:00
Zuul 497da9f90f Merge "api-ref: Fix an example in "Delete Assisted Volume Snapshot"" 2017-11-21 05:31:11 +00:00
Takashi NATSUME 5444e7ff3a api-ref: Add a description of 'key_name' in rebuild
In rebuild operation, users can unset the existing keypair
by setting 'key_name' to 'null' in a request body.
(The function has been added in
I23886a89c25f811cfbe7e2500ce7ff52f9162966).

But it is not described obviously in API reference.
So add an additional description in API reference.

Change-Id: I2d1b8eddd8555ad6896541b308895dc537686168
2017-11-21 02:00:51 +00:00
Takashi NATSUME 4f6005f787 api-ref: Fix an example in "Delete Assisted Volume Snapshot"
In "Delete Assisted Volume Snapshot",
there is an incorrect example in the description for
the 'delete_info' parameter.
So fix it.

Change-Id: I0b984bee06b0890d7705b9e47a5f975266b6a670
Closes-Bug: #1726254
2017-11-21 02:00:32 +00:00
Zuul 8fd4f9a029 Merge "api-ref: make a note about os:scheduler_hints being a top-level key" 2017-11-20 15:18:38 +00:00
Matt Riedemann 1f97f8399a api-ref: fix the type on the block_device_mapping_v2 parameter
The block_device_mapping_v2 parameter is a list of dicts, so
we need to fix the type in the api-ref description.

Change-Id: I099bd8adcfc57ae31010d68b5a5b46ffe68bac8d
2017-11-17 21:16:41 -05:00
Matt Riedemann 034d7f3795 Add microversion to allow setting flavor description
This adds the new microversion to allow providing
a description when creating a flavor, returning a
flavor description when showing flavor details, and
updating the description on an existing flavor.

Implements blueprint flavor-description

Change-Id: Ib16b0de82f9f9492f5cacf646dc3165a0849d75e
2017-11-15 22:10:39 +00:00
Matt Riedemann 26aefdfc0d api-ref: make a note about os:scheduler_hints being a top-level key
People get confused that os:scheduler_hints is not part of the
'server' portion of the POST /servers request body, it's actually
a separate top-level entry. This change makes a note of that in
the parameter description.

Change-Id: Id176c185dedcda970d1cd730267e2c5861b5b9c0
2017-11-14 13:26:56 -05:00
Zuul 691d99af63 Merge "block_device_mapping_v2.bus_type is missing from api-ref" 2017-11-14 12:37:01 +00:00
LIU Yulong 751f5dec11 Enable reset keypair while rebuilding instance
This patch adds `key_name` param to instance rebuild
API. Then the user could reset the instance keypair
when rebuilding. If set key_name to None, the API
will unset the keypair of the instance.

APIImpact

Implements blueprint: rebuild-keypair-reset

Change-Id: I23886a89c25f811cfbe7e2500ce7ff52f9162966
2017-11-13 10:49:02 +08:00
Kevin_Zheng b6ed91d05c block_device_mapping_v2.bus_type is missing from api-ref
block_device_mapping_v2.bus_type is missing from
POST /servers API reference. This patch add it.

Change-Id: I998cf6195d72c80649e9e0fd43be0cf37f8e2f48
Closes-Bug: #1713895
2017-11-09 09:33:09 +08:00
Matt Riedemann a6fcfb28ae api-ref: document caveats with scheduler hints
I noticed this while working on change
I49ffebcd129990f1835f404d98b51732a32171eb and I realized
the scheduler_hints in the legacy filter_properties
dict is a bit different than what's in the RequestSpec
object, namely that the request validation schema is
per-hint. Some require a single value, like 'group', and
some accept a list of values, like 'different_host'.

Given how nebulous scheduler hints are, we should probably
note these in the API reference for the parameter, especially
because scheduler hints should not be considered interoperable.

Change-Id: I74114fc56bee2bebf4a5f5d6823ec968cad9a8e9
2017-10-30 16:14:28 -04:00
Matt Riedemann 59bd2f6adc Import the config drive docs from openstack-manuals
As part of the docs migration from openstack-manuals to
nova in the pike release we missed the config-drive docs.

This change does the following:

1. Imports the config-drive doc into the user guide.
2. Fixes a broken link to the metadata service in the doc.
3. Removes a note about liberty being the current release.
4. Adds a link in the API reference parameters to actually
   point at the document we have in tree now, which is
   otherwise not very discoverable as the main index does
   not link to this page (or the user index for that matter).

Partial-Bug: #1714017
Closes-Bug: #1720873

Change-Id: I1d54e1f5a1a94e9821efad99b7fa430bd8fece0a
2017-10-24 12:22:11 -04:00
Matt Riedemann ad1b9360b5 api-ref: add warning about force evacuate for ironic
This adds to the existing warning about forcing a host during
evacuate and mentions how you really really shouldn't be doing
that if the instance is managed by the ironic driver
since those are 1:M with host:node relationships, and since you
can't specify a node when forcing the evacuate, nova will randomly
pick a node from the list for the given host and assign resource
allocations to that node which may already be fully allocated.

Change-Id: I8ae34399d32b2762a67e897807ffa2298e796c4c
2017-10-12 09:36:11 -04:00
Matt Riedemann 8b62bf6479 api-ref: note that project_id filter only works with all_tenants
The project_id / tenant_id filter parameters when
listing servers is only applied when the all_tenants
filter is used.

Otherwise if an admin is listing servers and specifies
project_id but not all_tenants, they only get back
instances for the admin's project (in the request context).

Change-Id: I9e8fae8fb86604d7394d0dba4d7c75c3fc93033e
Related-Bug: #1185290
2017-10-04 17:34:21 -04:00
Jenkins 659b63d84b Merge "fix nova accepting invalid availability zone name with ':'" 2017-10-04 18:54:23 +00:00
Tetsuro Nakamura 38b25397e8 fix nova accepting invalid availability zone name with ':'
Nova has a legacy hack to allow admins to specify hosts via an
availability zone using az:host:node. That means ':' cannot be
included in the name of an availability zone itself.

However, the aggregate API accepts requests which have
availability zone names including ':'.

This patch checks the availabilty zone name when aggregate is
created or updated and raises an error if it contains ':'.

Change-Id: I9b0d8e8d4b3ab2cb3d578c22fa259e0e7c0d325b
Closes-Bug: #1695861
2017-09-24 15:12:43 +09:00
Matt Riedemann 781a0286b5 api-ref: fix default sort key when listing servers
The default sort key when listing servers is the
'created_at' field, which is also in the list of
available sort keys in the same description for
this parameter. The 'created' field doesn't exist.

Change-Id: I7a971c421e69cc7a5630454305ee2cddaf0e92d3
2017-09-21 11:01:03 -04:00
Takashi NATSUME 2fce8a1396 Fix the ocata config-reference URLs
Replace the ocata config-reference URLs with
URLs in each project repo.

Change-Id: I48d7c77a6e0eaaf0efe66f848f45ae99007577e1
Closes-Bug: #1715545
2017-09-19 06:38:15 +00:00
Sean Dague f657efcdc5 Revert "Revert "Fix AZ related API docs""
Fix AZ related API docs

While we have a big fat comment in the development docs explaining why it's so
terrible to use default AZ values for either booting an instance or setting
an aggregate AZ metadata, we still have confusing API docs that provide the
wrong name for the AZ...

Fixing that and trying to explain the problem within the docs, too.

This reverts commit 92ca21abd6.

Co-Authored-By: Sylvain Bauza <sbauza@redhat.com>
Co-Authored-By: Stephen Finucane <stephenfin@redhat.com>

Change-Id: Ie4bfe32bbef0f8060bfc0ad4190f262d4a8bd3b2
2017-09-10 13:51:47 -06:00