In API microversion 2.22 in Nova there is new ServerMigrations resource
that allows opertators to force on-going live migration to complete:
https://review.openstack.org/#/c/245921/
This patch implements new method in python-novaclient to take advantage
of the new API:
nova live-migration-force-complete <instance_id/name> <migration_id>
Change-Id: I823c20b4e0c7b63e905f564a7dff13d3fb314a26
Implements blueprint pause-vm-during-live-migration
If command has arguments with one name, but for different versions(see an
example below), both arguments will be displayed. This patch fixes this
issue.
Example of arguments:
@cliutils.args("name",
help="Name of a good action.",
start_version="2.1",
end_version="2.20")
@cliutils.args("name",
help="Name of a very good action.",
start_version="2.21")
def do_something_good(cs, args):
pass
Example of helpoutput before patch:
Positional arguments:
<name> Name of a good action. (Supported by API versions '2.0' - '2.20')
<name> Name of a very good action. (Supported by API versions '2.21' -
'2.latest')
Change-Id: I59f155675e2aae642a5b90cb70008eb5647ffe79
As nova stable_api.rst indicated: As the extension will be removed
from Nove V2.1 REST API. So the concept of core API and extension
API is eliminated also. There is no difference between Nova V2.1
REST API, all of them are part of Nova stable REST API.
so we can move all extensions from contrib to core, this
patch is prelude of https://review.openstack.org/#/c/285213/ and
its following patchs.
Change-Id: Ibd5df4bcc70a4b4854fd519330d89c751f7409dc
Instead of using assertEqual(None, ***), developers should
use assertIsNone(***).
Change-Id: I55e9161a4df9197546603385228ea85528de43a7
Closes-Bug: #1510006
It's a resource-consuming task to implement full-flow (up to getting
and reading a dump file) functional test for trigger-crash-dump.
We need to upload Ubuntu image for booting an instance based on it,
and to install kdump with its further configuring on this instance.
Here, the "light" version of functional test is proposed.
It's based on knowledge that trigger-crash-dump uses a NMI injection,
and when the 'trigger-crash-dump' operation is executed,
instance's kernel receives the MNI signal, and an appropriate
message will appear in the instance's log.
Wait_for_server_os_boot() method has been added to ClientTestBase
to check if instance's operating system is completely booted.
The _create_server() method has been removed since the change
which puts this method to the base test class has been merged.
Change-Id: I2313c5d37a7cf87a8d75e37c93aab136cf028ec1
Skip creating the formatted log message
if the message is not going to be emitted
because of the log level.
TrivialFix
Change-Id: Ic35b67bc43c77a086409bed57b846f729300d5c0
per nova commint 2dc5d9f8632c83c9bc7ee6871c6631edf69a5570
indicated run_tests.sh should be deprecated to avoid confusion
to people and encourage usage of tox.
Change-Id: I23940b4da55226f6fa4504ed3839cc6620d0f579
Several OS projects(cinder, neutron, osc...) use
`novaclient.discover_extensions` for initialization novaclient.client.Client
with novaclient.v2.contrib extensions. In this case, it would be nice to
provide a way to not discover extension via python path an entry-point.
Change-Id: I030f4c55c2795c7f7973f5f12e54b9819c4a5578
Closes-Bug: #1509500
2.20 - From this version of the API user can call detach and attach volumes
for instances which are in shelved and shelved_offloaded state.
This change changes only server-side checks.
Change-Id: I15a988c730d2fb0be4416dc79b63d357ae990ff7
We need to check header only for nova-related calls. While we are unable to
determine nova's calls, let's just temporary disable it now and turn on it
in the future with 2.18 microversion.
Change-Id: I92cecb140fc478f0cf37783d2fcfcaccd935bdfc
NOTE: this check affects only novaclient-as-a-lib
2.19 - Allow the user to set and get the server description. The user will
be able to set the description when creating, rebuilding, or updating
a server, and get the description as part of the server details.
Methods `rebuild` and `create` of novaclient.v2.servers.ServerManager were
not wrapped with `api_versions.wraps` decorator to reduce code and docsting
duplication. Version checks added inside these methods.
Change-Id: I75b804c6edd0cdf02c2cd002d0b5968fec8da545
Currently the tests just attach instances to the first network returned
by "net-list". That might however not be the right thing in some
environments. This change allows to override the default network via the
environment variable "OS_NOVACLIENT_NETWORK". If not specified the
test will fallback to the old behaviour and just use the first network.
Closes-Bug: #1510975
Change-Id: Ie682111127584a33d8e96377d812d3a6352c760d
Currently, users must use different interface to get request_ids.
1. Commonly, ListWithMeta, DictWithMeta or TupleWithMeta, etc is
returned to user. And request_ids is returned as an attribute of
*WithMeta.
For a server delete action:
result = serverManager.delete(server)
# result = TupelWithMeta
request_ids = result.request_ids
2. Some places reutrn a tuple which contains request_ids in one of
its elements.
For a server stop action:
result = serverManager.stop(server)
# result = (Response, TupleWithMeta)
request_ids = result[1].request_ids
Such kind of difference makes user confused.
This change provides a backwards compatibility solution for users
who don't care about request_ids as TupleWithMeta is subclass of
tuple.
Change-Id: I164bb95abce6dc96cf455033f02822ccb0d87b8f
Closes-Bug: 1542179
2.18 - Establishes a set of routes that makes project_id an optional
construct in v2.1.
The change on Nova-API side adds only check for existence of
"project_id" at the url. It doesn't check microversion, so all latest
and previous microversions can work with or without project_id.
Proof: all functional tests are succeed on this change (several of them
use latest microversion).
To cut down "project_id" from the url at the novaclient side, we need to
modify ``novaclient.client.HttpClient`` and
``novaclient.client.SessionClient``. This change requires splitting
Nova's related requests and the others(authentication, volume...), which
are still require "project_id" at the url.
It is a complex task, which can be skipped for now to unblock
implementation of further microversions.
Change-Id: Ia6e608aac41d2f2d59b9504d21647e4f88af3335
NOTE: _poll_for_status is a private method, which is used only in shell
module, so we can modify it without backward compatibility.
_poll_for_status is used for various resources with different interfaces.
In case of snapshotting, it works with Image resources, which doesn't have
"fault" attribute in "error" state. To prevent AttributeError, we should take
this into account.
Also, an exception raised by _poll_for_status(InstanceInErrorState) should
not be hardcoded for one type of resource, so this exception is renamed to
ResourceInErrorState. An exception InstanceInDeletedState, which is also
can be raised by _poll_for_status, is not modified, since I don't know cases
when it can be used with resources other than Server.
Change-Id: Ie0ee96999376cbf608caa1cf8521dbef5c939b52
Closes-Bug: #1538073
The subclass of ManagerWithFind implements get() function, and all
the get() functions returns an object with request_ids. Let's expose
these request_ids to users directly.
Change-Id: Icb3c480c637c39412ed085f4523fb93e36fea0a7
Closes-Bug: 1541694
'request_ids' is a function of class RequestIdMixin.
Resource().__dict__.keys() doesn't contains a function. So it not
necessary to filter it.
Change-Id: I73af5d1be39769f70cbe4c1ec83144d56f94f91a
"# flake8: noqa" option disables all checks for the whole file.
To disable one line we should use "# noqa".
Closes Bug: #1540254
Change-Id: I34c8a2218f974cd7e78c60e9c1fec26751c4e82d
Follow new infra setup for translations, see spec
http://specs.openstack.org/openstack-infra/infra-specs/specs/translation_setup.html
for full details.
This basically renames
python-novaclient/locale/python-novaclient.pot to
novaclient/locale/novaclient. For this we need to update
setup.cfg. The domain name is already correct in
novaclient/i18n.py.
The project has no translations currently, let's remove the outdated
pot file, the updated scripts work without them. So, we can just
delete the file and once there are translations, an updated pot file
together with translations can be imported automatically.
Change-Id: Ifeabedf157f0338c1e76dc5ab8ab41e2e331ad87
Add return-request-id-to-caller function to
resources and resource managers in the following files.
The methods in the resource class and resource manager return
a wrapper class that has 'request_ids' property.
The caller can get request ids of the callee via the property.
* novaclient/v2/volume_snapshots.py
* novaclient/v2/volumes.py
* novaclient/v2/volume_types.py
Co-authored-by: Ankit Agrawal <ankit11.agrawal@nttdata.com>
Change-Id: I4de8c5cf685a5970acc92f8a58a1db26a8d9ffc7
Implements: blueprint return-request-id-to-caller
Add return-request-id-to-caller function to
resources and resource managers in the following files.
The methods in the resource class and resource manager return
a wrapper class that has 'request_ids' property.
The caller can get request ids of the callee via the property.
* novaclient/v2/contrib/assisted_volume_snapshots.py
* novaclient/v2/contrib/baremetal.py
* novaclient/v2/contrib/cells.py
* novaclient/v2/contrib/instance_action.py
* novaclient/v2/contrib/list_extensions.py
* novaclient/v2/contrib/migrations.py
* novaclient/v2/contrib/server_external_events.py
* novaclient/v2/contrib/tenant_networks.py
Co-authored-by: Ankit Agrawal <ankit11.agrawal@nttdata.com>
Change-Id: I58ec61eb585d145cb7d638bcb690b3ebee0461e9
Implements: blueprint return-request-id-to-caller
Add return-request-id-to-caller function to
resources and resource managers in the following files.
The methods in the resource class and resource manager return
a wrapper class that has 'request_ids' property.
The caller can get request ids of the callee via the property.
* novaclient/v2/keypairs.py
* novaclient/v2/limits.py
* novaclient/v2/networks.py
* novaclient/v2/quota_classes.py
* novaclient/v2/quotas.py
* novaclient/v2/security_group_default_rules.py
* novaclient/v2/security_group_rules.py
* novaclient/v2/security_groups.py
* novaclient/v2/server_groups.py
* novaclient/v2/services.py
* novaclient/v2/usage.py
* novaclient/v2/versions.py
Co-authored-by: Ankit Agrawal <ankit11.agrawal@nttdata.com>
Change-Id: I9203f70a0eef5686b590fbff35563f2cf8b6f586
Implements: blueprint return-request-id-to-caller
Bug_description:
Today, in order to specify networking arguments, the nova client
only accept uuid's. It would be nice if we could extend the
client option to allow names to be accepted too.
Solution:
This patch supports provisioning of VM by mentioning network name.
_boot method currently validates for network ID to boot a VM.
Updates:
* new parameter 'net-name' is added
* when 'net-name' is specified network ID is retrieved
* network ID is used for further processing of vm boot request
* if multiple networks with the same name exist then
NoUniqueMatch exception is raised
* help text is updated
DocImpact
Closes-Bug: #1496180
Co-Authored-By: Pavel Kholkin <pkholkin@mirantis.com>
Change-Id: Ifb14a76749901ee106cdb807e38820a2c25e1320