Commit Graph

360 Commits

Author SHA1 Message Date
Stephen Finucane 80ee69aa30 trivial: Remove use of kwargs
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>
2022-12-12 17:43:23 +00:00
Stephen Finucane c408db2dd9 Update pre-commit hook, hacking versions
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>
2022-04-08 17:49:08 +09:00
Stephen Finucane 8066f8c745 Microversion 2.90 - Configurable hostnames
Change-Id: Icd4362a07196e59bafcdfaff44323ce1386d4f55
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Depends-On: https://review.opendev.org/c/openstack/nova/+/778550/
2021-09-02 11:01:07 +01:00
Lee Yarwood cfa172c4fd Microversion 2.89 - os-volume_attachments
Depends-On: https://review.opendev.org/c/openstack/nova/+/804275
Change-Id: If6275dbd3795047c111ac507a12b034e60029df8
2021-08-24 19:10:41 +01:00
Stephen Finucane 54d4da112a Add support for microversion v2.88
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>
2021-03-02 12:14:12 +00:00
Takashi Natsume 9b474afdb2 Deprecate agent commands and APIs
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>
2021-01-13 14:43:51 +00:00
Takashi Natsume e93a00b24e Remove future imports
These particular imports are no longer needed
in a Python 3-only world.

Change-Id: I405b32c8cdd60fb19270a8f6fe2e2728022f7c6e
Signed-off-by: Takashi Natsume <takanattie@gmail.com>
2020-04-26 07:19:26 +00:00
zhangbailin 4d6c70d25d Microversion 2.85: Change volume-update CLI
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
2020-04-09 08:52:05 +08:00
Stephen Finucane ea092b2988 Make 'server list --config-drive' a boolean option
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>
2020-04-08 17:27:33 +01:00
Victor Coutellier 9ee74d3ac6 Microversion 2.83 - Add more filters for the nova list command
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
2020-04-07 18:34:13 +02:00
Stephen Finucane 03dca4bc82 Don't print user_data for 'nova show'
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
2020-02-26 13:48:11 +00:00
Stephen Finucane 8f50f84981 Bump to hacking 2.x
This is compatible with Python 3-only syntax.

Change-Id: I462f4242b9a5f8d8cd6b0cb3d328dfd9d93ba200
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
2020-02-21 09:48:38 +00:00
Stephen Finucane c4c44bcb2d Remove six
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>
2020-02-21 09:48:38 +00:00
Dan Smith 71c29a184b Add aggregate-cache-images command and client routines
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
2019-10-18 10:50:01 -07:00
Dan Smith e1bb4378db Add images.GlanceManager.find_images() bulk query
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
2019-10-18 10:49:53 -07:00
zhangbailin 8744bea0e3 Microversion 2.80: Add user_id/project_id to migration-list API
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
2019-10-16 14:07:28 +00:00
Zuul 3f286e7d8c Merge "Clarify --migration-type migration value as cold migration" 2019-10-09 22:54:21 +00:00
Takashi NATSUME 364cad4191 Remove cells v1 and extension commands and APIs
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
2019-10-04 10:09:31 +09:00
Stephen Finucane 6954aacd54 Stop silently ignoring invalid 'nova boot --hint' options
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
2019-09-27 12:06:23 +00:00
Takashi NATSUME d1c5dc61d6 Add a check for --config-drive option on nova boot
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
2019-09-18 23:08:28 +00:00
zhangbailin cd396b8b61 Microversion 2.79: Add delete_on_termination to volume-attach API
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
2019-09-09 12:43:42 -04:00
Yongli He aae95dcc7a Microversion 2.78 - show server topology
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
2019-09-06 17:24:17 -04:00
Zuul e43596ca5c Merge "Microversion 2.77: Support Specifying AZ to unshelve" 2019-08-29 14:33:17 +00:00
zhangbailin ecfa521b21 Microversion 2.77: Support Specifying AZ to unshelve
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
2019-08-28 17:43:22 -04:00
Matt Riedemann 96dcf13f46 Clarify --migration-type migration value as cold migration
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
2019-08-26 11:26:18 -04:00
Matt Riedemann 0e7c99c8ea Add --migration-type and --source-compute to migration-list
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
2019-08-08 18:13:33 -04:00
Matt Riedemann e281368c96 docs: clarify nova migration-list --host option
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
2019-08-07 09:23:45 -04:00
Zuul d354c76bd2 Merge "Deprecate cells v1 and extension commands and APIs" 2019-07-15 13:24:14 +00:00
Takashi NATSUME 3ac90a5273 Deprecate cells v1 and extension commands and APIs
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
2019-07-10 08:54:36 +09:00
zhu.boxiang 41c25881e6 Add host and hypervisor_hostname to create servers
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
2019-07-08 19:26:01 +00:00
zhangbailin 7b9d300089 Set the lower limit of api_version for volume_type
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
2019-05-23 08:18:04 +08:00
Surya Seetharaman f0388977c1 [Docs] Update client docs to add reason and locked options
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
2019-05-14 11:31:46 +02:00
Surya Seetharaman a1ac69c69a Microversion 2.73: Support adding the reason behind a server lock
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
2019-05-13 14:37:43 +02:00
Stephen Finucane a9b1125f7b Revert "Fix crashing console-log"
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
2019-04-05 07:53:47 +01:00
Takashi NATSUME a7ea3fb09b Remove deprecated options
Remove the following deprecated options.

* --endpoint-override
* --instance-name ('nova list' command)

Change-Id: Ic6a78f04a98c1616750e6ecd6225f2750c214dd7
2019-03-21 13:50:41 +00:00
Takashi NATSUME a306395d74 Remove unnecessary if statement
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
2019-03-01 15:52:22 +09:00
Matt Riedemann de22cdd3c8 Add support for microversion 2.70 - expose device tags
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
2019-02-28 12:07:25 -05:00
Zuul d64677701c Merge "Add a note in "nova service-delete" help about deleting computes" 2019-02-26 01:48:45 +00:00
Zuul 1ae9a85840 Merge "Fix output of interface-attach command" 2019-02-26 01:48:44 +00:00
Surya Seetharaman 14a45183ee API microversion 2.69: Handles Down Cells
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
2019-02-20 11:58:39 -05:00
Takashi NATSUME 7e56102201 Fix output of interface-attach command
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
2019-02-19 13:22:49 +09:00
Stephen Finucane 162f4769b8 Microversion 2.68: Remove 'forced' live migrations, evacuations
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
2019-02-13 21:15:23 +00:00
Matt Riedemann 4ceba48697 Add a note in "nova service-delete" help about deleting computes
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
2019-01-15 12:20:31 -05:00
zhaolihui b13ba0138f Fix flavor keyerror when nova boot vm
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
2018-12-13 07:50:37 +00:00
Zuul 58b3ac457a Merge "Replace MB with MiB" 2018-10-27 05:55:20 +00:00
Zuul 9abb67c8f4 Merge "Deprecate the unused instance-name" 2018-10-25 04:29:28 +00:00
Tao Li 910201f201 Deprecate the unused instance-name
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
2018-10-25 00:54:05 +00:00
Takashi NATSUME 80b4286981 Replace MB with MiB
Change-Id: Ie5bd325d8e0f7e9af76c1ddae1d679b0e797c84b
2018-10-22 07:11:25 +00:00
Matt Riedemann 578b37f994 Recommend against using --force for evacuate/live migration
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
2018-10-17 16:32:42 -04:00
Matt Riedemann 4fef02de71 Add support for microversion 2.67: BDMv2 volume_type
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
2018-10-14 05:34:24 -04:00