Make use of a "sentinel" object to allow us to remove the use of kwargs
and provide a more helpful docstring. With any luck, Python will support
these objects natively in a future release [1].
[1] https://www.python.org/dev/peps/pep-0661/
Change-Id: I411c0393754c8fe8a6698f0d278b73f12209ace8
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This was done with 'pre-commit autoupdate'. An invalid message is
removed from the requirements.txt files as it no longer applies with
pip's new dependency resolver.
Change-Id: I01c3ece51f81d67c740e6faca6b77df7c9932435
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
The key change here is that the 'GET /os-hypervisors/{id}/uptime' API
will now returns a HTTP 404 starting in 2.88. The 'GET
/os-hypervisors/{id}' will instead now include an 'uptime' value. The
'novaclient.v2.hypervisors.HypervisorManager.uptime' method is updated
to handle this.
Change-Id: Ib99fbd820a586c14527ff64b319df0b7a44e1b8b
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
The os-agents APIs have been removed by the following change.
I9512f605dd2b3b0e88c951ed086250d57056303d
This patch makes commands related to the APIs deprecated
in accordance with the following policy.
* https://docs.openstack.org/python-novaclient/latest/contributor/deprecation-policy.html
The API bindings related to the APIs remains as they are
because python-openstackclient depends on the API bindings.
Change-Id: I89d7877e23e8802fe77987a7b24ea247e08d5218
Signed-off-by: Takashi Natsume <takanattie@gmail.com>
These particular imports are no longer needed
in a Python 3-only world.
Change-Id: I405b32c8cdd60fb19270a8f6fe2e2728022f7c6e
Signed-off-by: Takashi Natsume <takanattie@gmail.com>
This commit add a new CLI
``nova volume-update [--[no-]delete-on-termination]
<server> <src_volume> <dest_volume>`` to update
'delete_on_termination' for an attached volume, that the user can
decide whether to delete attached volumes when destroying the server.
Depends-On: https://review.opendev.org/#/c/711194/
Change-Id: I1fc64fb6e6611c92c6b72265e1bf4b32e9c45f0a
Blueprint: destroy-instance-with-datavolume
Instead of passing through whatever the user provides and exposing this
bug in the REST API, simply make the opt a boolean one in expectation of
a day where the API issues have been resolved.
This also introduces machinery necessary to use more of these types of
opts in the future.
Change-Id: I9033540ac65ac0ee7337f16bdd002060652092ea
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Add these new filters, admin-only until microversion 2.82:
- availability-zone
- config-drive
- key-name
- power-state
- task-state
- vm-state
- progress
Existing user filter will be available to non admin since microversion
2.83.
Part of blueprint non-admin-filter-instance-by-az
Change-Id: Id2b5e600c0a41790830823031b20983808cb5ace
User data is a blob of data that the user can specify when they launch
an instance. It's generally binary data, which means it's not something
we should show by default on the CLI. Stop doing that.
Change-Id: If8f6cc040d0077a7902a5fd425e67d74d7925a46
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Closes-Bug: #1669140
This is compatible with Python 3-only syntax.
Change-Id: I462f4242b9a5f8d8cd6b0cb3d328dfd9d93ba200
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Mostly a find-replace job. Let's do this now so we don't have to carry
it for the next decade.
Change-Id: I7bef9fb7c6895f746cee1aca6522786f38b9857c
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This adds the ability to request image precache support for an aggregate
in support of the matching server feature.
Related to blueprint image-precache-support
Depends-On: https://review.opendev.org/#/c/687140
Change-Id: Id354ccfa99e500a598685e6b794c12160ea2a990
This adds a bulk query method to GlanceManager that takes multiple
image names or ids and attempts to query glance for all of them
in fewer requests than one-per-image.
Change-Id: I1c6ce27b65920356df6b7001c581a2922765ce0c
Add ``user_id`` and ``project_id`` to the ``GET /os-migrations``
API, and it can called ``--user-id <user_id>`` and/or
``--project-id <project_id>`` by ``nova migration-list`` CLI.
Showing the ``user_id`` and ``project_id`` when using api_version>=2.80
with the server-migration-list or server-migration-show APIs.
Depends-On: https://review.opendev.org/#/c/674243/
Part of blueprint add-user-id-field-to-the-migrations-table
Change-Id: I11343ca265ab2b6b6f46877897d8223ef340c258
The following CLIs and their backing API bindings
which have been deprecated since 20.0.0 Train release
have now been removed.
- list-extensions
- cell-capacities
- cell-show
Change-Id: I8e6edf1e4c1bf12d51ed993363129b4f4c3aa36c
The '--hint' option for 'nova boot' expects a key-value pair like so:
nova boot --hint group=245e1dfe-2d0e-4139-80a9-fce124948896 ...
However, the command doesn't complain if this isn't the case, meaning
typos like the below aren't indicated to the user:
nova boot --hint 245e1dfe-2d0e-4139-80a9-fce124948896
Due to how we'd implemented this here, this ultimately results in us
POSTing the following as part of the body to 'os-servers':
{
...
"OS-SCH-HNT:scheduler_hints": {
"245e1dfe-2d0e-4139-80a9-fce124948896": null
}
...
}
Which is unfortunately allowed and ignored by nova due to the use of
'additionalProperties' in the schema [1]
Do what we do for loads of other options and explicitly fail on invalid
values.
[1] https://github.com/openstack/nova/blob/19.0.0/nova/api/openstack/compute/schemas/servers.py#L142-L146
Change-Id: I0f9f75cba68e7582d32d4aab2f8f077b4360d386
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Closes-Bug: #1845322
A value of the '--config-drive' option must be a boolean value
on the 'nova boot' command because nova accepts a boolean value
only for the 'config_drive' parameter.
So add a check for the '--config-drive' option on the 'nova boot'
command.
Fix a description for 'config_drive' parameter
in the 'create' method of the novaclient.v2.ServerManager class.
Change-Id: Ic6e65139302fbb662fb6ba60e73633dad8ffb72e
Closes-Bug: #1825061
Support add 'delete_on_termination' field to the voume attach API to
support configuring whether to delete the data volume when the server
is destroyed.
* Updating the ``nova volume-attachments`` command to show the
``delete_on_termination`` value if 2.79 or greater is used.
* The '--delete-on-termination' option is added to the `nova volume-attach`
CLI.
Depends-On: https://review.opendev.org/#/c/673133/
Part of blueprint support-delete-on-termination-in-server-attach-volume
Change-Id: I8dcf2fd21a2fd99ca4e05bd953fbbe026be3a619
Add support microversion 2.78 which adds server topology
information in the output of the following new command:
nova server-topology
Depends-on: https://review.opendev.org/#/c/621476/
Change-Id: I6467d52d2528a37348458baf4842b571a97f3ed2
Implements: blueprint show-server-numa-topology
This patch adds a new parameter ``--availability-zone`` to ``nova
unshelve`` command. This can help users to specify an ``availability_zone``
to unshelve a shelve offloaded server from 2.77 microversion.
Depends-On: https://review.opendev.org/#/c/663851/
Implements: blueprint support-specifying-az-when-restore-shelved-server
Change-Id: I8bce8f430bc54f03bacc105e37fc8b3bbf2432c2
This is a follow up to a review discussion [1] where the
"migration" value for the --migration-type option is for
a cold migration. This change just updates docs and help
strings.
An alternative is changing "migration" as a valid value to
"cold-migration" (or accept both) and under the covers treat
"cold-migration" as "migration" for the actual API call.
[1] https://review.opendev.org/#/c/675117/3/novaclient/v2/shell.py@5430
Related to blueprint more-migration-list-filters
Change-Id: I6baa6af8731252e3c4976db06f0ca9cdfcb5e2f1
The GET /os-migrations API take a migration_type and source_compute
filter parameter on the request since the v2.0 API. This adds support
for specifying those parameters in the "nova migration-list" CLI
and related MigrationManager.list() python API binding methods.
A functional test is added which will cover the new options on all
three of the decorated do_migration_list shell methods with lower
bounds on 2.1, 2.59 and 2.66. Since the only type of migration we
can safely generate in a single-node CI job is a resize the test
does a resize. As such, _pick_alternate_flavor is moved into the
base test class for re-use.
Implements blueprint more-migration-list-filters
Change-Id: I4be9a06df3e0d40d3990d067ce112247a81b45b4
The GET /os-migrations API takes both a host and
source_compute filter parameter. The former filters
on either the source or destination compute, so this
change clarifies that in the command help for the
--host option.
Change-Id: I078add63896c7455be7e3672b7172debb962a5e2
The API extension has been deprecated since 12.0.0 Liberty release (*1)
and the cells v1 has been deprecated since 16.0.0 Pike release (*2)
in the nova side.
The API extension has already been removed (merged into main
controllers and schema) since 19.0.0 Stein release (*3) and
the cells v1 APIs has already been removed since
Iddb519008515f591cf1d884872a5887afbe766f2.
In the python-novaclient side,
deprecate commands and API bindings related to
the API extension and the cells v1 at first.
Then the CLIs and API bindings will be removed in the first major
release after Nova 20.0.0 Train is released.
*1: I084444b11dceda7cf8f88c157aa67d36490fce49
*2: I1a173f7ce0715e684850e030c358e8175fa8724c
*3: https://review.opendev.org/#/q/topic:bp/api-extensions-merge-stein
Change-Id: I8dc4df95ac7f6974c5280e4107e449d04cd1402e
Closes-Bug: #1835699
Adds the --host and --hypervisor-hostname options to
the nova boot command and related python API bindings.
Depends-On: https://review.opendev.org/#/c/645520/
Change-Id: If16d00b75f4d5f2b96aa6e3f32a973108049d928
Blueprint: add-host-and-hypervisor-hostname-flag-to-create-server
In boot server API, the volume_type is supported by microversion 2.67.
Therefore, the lower limit of the volume_type should be added to the CLI
command, otherwise an exception will occur.
Co-Authored-By: Eric Xie <eric_xiett@163.com>
Closes-Bug: #1829854
Change-Id: Ie909c16568b017ca0acc802194140da7bece76c5
This patch adds information about the ``locked`` filter/sorting key
and the ``reason`` options that were added in
https://review.opendev.org/#/c/648659/.
Related to blueprint add-locked-reason
Change-Id: I11cc4bd7cee0f03d4398f91bb3790c4c681061f4
This patch adds a new parameter ``--reason`` to ``nova lock``
command and ``--locked`` filtering/sorting parameter to
``nova list`` command. This can help users to provide a reason
when locking the server and to filter/sort instances based on their
locked or value from 2.73 microversion.
Implements blueprint add-locked-reason
Depends-On: https://review.opendev.org/#/c/648662/
Change-Id: I438e6db2dd5000ba388d0a0f1c8ab74b96b47a71
This reverts commit d272d6f3df. This
worked around a misconfigured environment by forcing stdout to use
UTF-8. This is kind of a hack and it only works in Python 2, breaking
Python 3 [1].
The correct solution to this issue and all Python 2 unicode print issues
is to correctly configuring LC_ALL to use a UTF-8 locale.
[1] https://stackoverflow.com/q/4374455
Change-Id: Iaeec1e74262a35f3de3c81f7013835a6aa6f9029
Closes-Bug: #1823287
The interface_list method of
the novaclient.v2.server.Server class always returns
an object of the novaclient.base.ListWithMeta class
which is a sub class of list.
So 'if' statement that check whether it is an instance of list
is not necessary when printing the return value of the method.
Change-Id: I5dc5bfc6a783bb59c3aec2cce626bb00de633754
This adds support for microversion 2.70 which exposes
the 'tag' field in the following APIs:
* GET /servers/{server_id}/os-volume_attachments
* GET /servers/{server_id}/os-volume_attachments/{volume_id}
* POST /servers/{server_id}/os-volume_attachments
* GET /servers/{server_id}/os-interface
* GET /servers/{server_id}/os-interface/{port_id}
* POST /servers/{server_id}/os-interface
Which corresponds to showing the tag in the output of
the following commands:
* nova volume-attachments
* nova volume-attach
* nova interface-list
* nova interface-attach
Depends-On: https://review.openstack.org/631948/
Part of blueprint expose-virtual-device-tags-in-rest-api
Change-Id: I5e9d7e0219605503a56d2cf745b95c6e05d01101
This patch explicitly points out the change needed while
forming the detailed lists for embedded flavor information.
In those cases where the server response for nova list
has the flavor key missing for the instances in the down cell,
the servers will be skipped.
Depends-On: https://review.openstack.org/591657/
Related to blueprint handling-down-cell
Change-Id: I007d9a68309b0d3aa85a4edf5026043154d4f42a
Add output of a result in the 'nova interface-attach'
command when it is successful.
Make the following methods return a 'NetworkInterface'
object instead of a 'Server' object.
* The 'interface_attach' method
in the 'novaclient.v2.Server' class
* The 'interface_attach' method
in the 'novaclient.v2.ServerManager' class
Remove unnecessary code in the 'nova interface-detach'
command because the response body is not returned.
Change-Id: Id5316d8ad4a4b67e8399b51e602aafc83bc128c6
Closes-Bug: #1816511
Update the commands and Python API bindings to reflect the new
microversion. The various evacuate microversion functions are DRY'd up
along the way.
Change-Id: Ibfc905292258ffde05800387e5d6bbad4823085c
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Depends-On: https://review.openstack.org/#/c/634600/
Implements: blueprint remove-force-flag-from-live-migrate-and-evacuate
This mirrors the note in the API reference from change
I68f2074814c3ae890888a5c75fd2870bb99f0e08 to the service-delete
CLI help and docs.
Change-Id: I191f6e6a4b7c6c456afbd33b0256842b043c772e
Related-Bug: #1646255
When creating a server (the 'nova boot' command),
it calls 'POST /servers' API.
The response does not have 'addresses' and 'flavor' attributes.
When accessing 'networks' attribute in the '_print_server' function,
it calls 'GET /servers/{server_id}' and get the 'addresses' and
'flavor' attributes.
If 'GET /servers/{server_id}' fails, the server object does not have
the 'flavor' attribute, then KeyError is raised when accessing it.
Fix the issue by making it raise a CommandError
when the 'GET /servers/{server_id}' fails.
Co-Authored-By: Takashi Natsume <natsume.takashi@lab.ntt.co.jp>
Change-Id: I3ef096c61b0e05a637ab0c4a1027338fa87e4f09
Closes-Bug: #1781368
The '--instnace-name' option exists in nova CLI for a long time,
but it is not used, so we deprecate it firstly and will remove it in
T release.
Change-Id: I0c3d611fc322ae2c9f28ce3845b1c08eaab69485
Closes-Bug: #1788182
This copies the same warnings from the API reference change
I85e7c2677f4d5eccc1e7f349de06960b53ef148d to the CLI help
for the various evacuate/live migrate commands. It also
mentions that if a host is not specified, one is selected
by the scheduler (which is what we really want people doing).
Given blueprint remove-force-flag-from-live-migrate-and-evacuate
we really want to discourage people from using the --force
flag.
Change-Id: I15ef933cc09947e2bb3fb7bf17b15735171a9bec
This adds the nova boot command and python API binding
support for creating a server with block device mappings
defined using a specific volume type.
Depends-On: https://review.openstack.org/606398/
Depends-On: https://review.openstack.org/#/c/610349/
Part of blueprint boot-instance-specific-storage-backend
Change-Id: I484ee065119b5783db212ea64efa60e87c40338c