Defining the 'keymap' option in libvirt results in the '-k' option being
passed through to QEMU [1][2]. This QEMU option has some uses, primarily
for users interacting with QEMU via stdin on the text console. However,
for users interacting with QEMU via VNC or Spice, like nova users do, it
is strongly recommended to never add the "-k" option. Doing so will
force QEMU to do keymap conversions which are known to be lossy. This
disproportionately affects users with non-US keyboard layouts, who would
be better served by relying on the guest OS to manage this.
In the long term, we would like to deprecate these options. However, we
must do this in three parts. This part allows users to unset the options
and warns users who have them set about the side effects. This change is
intended to be backported. A future change will fully deprecate the
options. Finally, after the deprecation cycle has passed, we can remove
these options in their entirety.
[1] https://github.com/libvirt/libvirt/blob/v1.2.9-maint/src/qemu/qemu_command.c#L6985-L6986
[2] https://github.com/libvirt/libvirt/blob/v1.2.9-maint/src/qemu/qemu_command.c#L7215-L7216
Change-Id: I6b1d719db0537b0f53768dbb00a5b4d01c85ba3a
Related-Bug: #1682020
The default used in code for CONF.notifications.default_publisher_id
is CONF.host, which is a free-form StrOpt.
In an upcoming change, the "my_ip" option is going to be changed from
a StrOpt to an IPOpt, so we made the default value change for
the default_publisher_id option before that.
Change-Id: Ia85130f66bd5a60097e8967064559fd0962d06fd
Closes-Bug: #1713150
This option, along with monkey_patch_modules, is
arguably worse than hooks since it doesn't even
rely on having in-tree code. It's super legacy,
not tested, not supported and is a barrier to
interoperability, so we should deprecate it for
removal.
This also allows us to deprecate the default_publisher_id
option which is used for the legacy notify_decorator
which is only used if specified with the monkey_patch_modules
option, which is also deprecated here.
Also removed the nova.api.ec2.cloud mention from the
config option help text for monkey_patch_modules
since that isn't valid in nova anymore.
Change-Id: Id793ac2c5cdc5dc473f95eac53b77617a1e389da
The Cells v1 feature is deprecated, meaning we can also deprecate the
respective commands in nova-manage. Do this.
Change-Id: I6db62a16272c74215944db164830515b774f5085
No recent neutron deployment should ever have the port_binding extension
missing in its list.
It appears like this has been the case since this commit in Liberty:
61121c5f2af27e31092db7ac6947f796198410a8
It causing lots of confusion around when an admin_client should be used,
among other things, so lets remove this needless complexity.
Co-Authored-By: Augustina Ragwitz <auggy@cpan.org>
Change-Id: I5fa73fa0610b23ef231952b2035a284819186a7c
Related-Bug: 1608601
Currently we report the full inventory for available nodes, and an empty
inventory for nodes that are deployed to or otherwise unavailable.
Reporting an empty inventory for deployed nodes has 2 bad consequences:
1. Nova tries deleting the inventory for Placement, which fails, because
the resources are still in use. This results in nasty warnings.
2. When adding a resource class to a deployed node, it does not get into
inventory, and thus does not get to Placement. It results in an error
later on, when the custom resource class is not found.
This patch fixes the latter problem by
1. Always reporting the custom resource class for deployed nodes, if present.
2. Reporting VCPUS/memory/disk in exactly the same amount, as it is configured
in the ironic node's properties.
As a side effect, the warnings are no longer shown for deployed nodes.
They still appear, however, for nodes during cleaning.
Partial-Bug: #1710141
Change-Id: I2fd1e4a95f000da19864e75299afa51527697101
This change deprecates the Exact filters, and two options commonly used
to enable them. Custom resource classes should be used instead.
Change-Id: I843353427c90142a366ae9ca63ee4298b4f3ecd4
Since we now use placement to verify basic CPU/RAM/disk resources,
we should default to disabling the equivalent scheduler filters.
Oddly enough, CoreFilter was already disabled so now also disable
RamFilter and DiskFilter.
Closes-Bug: #1709328
Change-Id: Ibe1cee1cb2642f61a8d6bf9c3f6bbee4f2c2f414
FilterScheduler with Placement should replace both of these. Mark them
as deprecated now so the timer starts.
Change-Id: Ia7ff98ff28b7265058845e46b277317a2bfc96d2
Due to the scheduler report client on the compute service
not being aware of shared storage providers in Placement
for a given compute node, we can't claim support for
shared storage pool modeling in Pike. This adds a release
note to be clear about the lack of that functionality.
Change-Id: I0692a4fdf9a19889c5d708fb9a6a562c914963f9
Related-Bug: #1707256
Our release notes are read by a lot of people and we somehow need
to summarize the top main changes that are in that release for Nova.
Audience is targeted to be general and not really dev-oriented.
Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>
Change-Id: I65cfb6e22597edfeda687fc2f0c5ae5e098aa950
A large chunk of the release note for this is duplicated with
the same reno from e5080c733076f5098f85952051878f41d47f8181
but the formatting and wording is slightly different.
This fixes them to look similar for the duplicate text.
Change-Id: Idd6149ae85ac2724633b80e938c4c1bf981b772b
Both the 'api_db' and 'db' categories / commands define a 'sync'
(sub)command which takes an optional '--version' parameter. We want to
start using 'cliff' in Queens, but that framework does not support
command-level parameters with the exception of '--help' [1]. If you
think of something like the 'ls' command, you can run it without any
arguments and assume a default of the current directory, or you can
specify the argument. In the same way, these commands should really be
using optional parameters instead of positional arguments. We do this
and add aliases for the older parameters to ease with the transition.
These aliases are deprecated, raise warnings and will be removed in the
move to cliff.
[1] https://bugs.launchpad.net/python-cliff/+bug/1619708
Change-Id: I3fd9fe0317bcd1a59c366e60154b095e8df92327
Partially-Implements: bp move-nova-cmds-to-cliff
We broke the possibility in Ocata with Icdcf839b6d28893694bfa1355e9dbe8dbb5ea8c3
to use other scheduler drivers but the ones we provided in tree.
Unfortunately, that was an incidental change without any communication.
Removing the choices kwarg will allow operators to run their own scheduler driver.
Whether Nova would stop supporting custom drivers would require a totally separate
change which would clearly communicate thru a deprecation notice but that is not
the intent for that bugfix, which aims only to bring back the capability.
Change-Id: I346881bc3bc48794b139cc471be1de11c49b8ee3
Closes-Bug: #1704788
With multi-cell support in Pike, we should deprecate cells v1
so we can at least start the deprecation signaling in the
docs and release notes. We may not end up removing cells v1
code in Queens, but this at least gives us the option.
Note that we also want to do this because nova-network cannot
be removed until we remove cells v1.
Change-Id: I1a173f7ce0715e684850e030c358e8175fa8724c
Change If1e03c9343b8cc9c34bd51c2b4d25acdb21131ff made the
"PUT /os-services/*" APIs only work with nova-compute services
since they now rely on finding the compute service in a cell
via the host_mappings record in the API database, and host
mappings only exist for compute services.
No one should have relied on disabling a non-compute service since
that does nothing, at least with in-tree code.
This change just adds a release note for awareness.
Change-Id: Idb5bbc31a0aabc328f11e5a9979e5b80651a8f67
Closes-Bug: #1700359
Adds logic to call the placement API's PUT /allocations/{consumer_uuid}
when selecting hosts in the filter scheduler's _schedule() method.
We only attempt the claim of resources if and only if the scheduler
driver uses allocation candidates (i.e. it isn't the caching scheduler)
and the conductor has passed in a list of instance UUIDs (otherwise,
there's no way to allocate in the placement API).
Change-Id: Ifc5cf482209e4f6f4e3e39b24389bd3563d86444
blueprint: placement-claims
Running under a real wsgi environment, such as uwsgi or apache /
mod_wsgi is preferred now, and there is a different logging solution
for that. This was always an eventlet leaky abstraction. So we'll just
deprecate this for now, and the code can be removed once eventlet on
the API side is removed.
Change-Id: I934a1693cbfd539d8575d022519510d19d13aaab
These patches enable Netronome Agilio SmartNIC acceleration in Nova.
* This patch set adds VIF_TYPE_AGILIO_OVS to hook in the external ML2
plugin.
* This patch set adds VNIC_TYPE_VIRTIO_FORWARDER to enable the
virtio-forwarder plugging mode.
* nova/network/neutronv2/api.py has been modified to pass the bridge
in the os-vif objects, similar to other OVS VIF types.
* os_vif_util.py has been extended to handle the agilio_ovs os-vif
plugin.
* VIFPortProfileOVSRepresentor is used to pass the PCI address and vif
name to the os-vif plugin.
* Note: this enables the external ML2 and OS-VIF plugin, hosted at
https://github.com/Netronome/agilio-ovs-openstack-plugin
to support the out-of-tree version of Agilio OVS. Consult the Agilio
documentation for configuration recommendations.
Change-Id: I3da059fb62f085ff04532f8ec05857acfb628b06
Depends-On: Id95a9f311e71b3cefb170704728641a4a1a91144
Signed-off-by: Jan Gutter <jan.gutter@netronome.com>
This enables Ironic to boot bare metal machines from Cinder
volume. Ironic virt driver needs to pass the remote volume
connection information down to Ironic when spawning a new
bare metal instance requested to boot from a Cinder volume.
This implements get_volume_connector method for the Ironic
driver. It will get connector information from the Ironic service
and pass it to Cinder's initialize_connection method for attached
volumes. And then it puts the returned value into Ironic.
This patch changes the required Ironic API version to 1.32 for using
new API for volume resources.
Co-Authored-By: Satoru Moriya <satoru.moriya.br@hitachi.com>
Co-Authored-By: Hironori Shiina <shiina.hironori@jp.fujitsu.com>
Change-Id: I319779af265684715f0142577a217ab66632bf4f
Implements: blueprint ironic-boot-from-volume
This moves quota limits and classes from the main database to the
API database in an online migration.
Part of blueprint cells-quota-api-db
Change-Id: I64b600b30f6e54db0ec9083c6c176e895c6d0cc2
If someone chooses to run under uwsgi/apache instead of eventlet, the
basic logging of requests goes away (as that was an eventlet.wsgi
function). This is a critical piece of information for understanding
how services are working, and we need to retain it under uwsgi/apache.
This creates a new request_log middleware, inspired by the one in
placement, to provide that functionality. This includes all the same
information as before: http method, uri, status, content length, time
for the request. It also includes the microversion the request was
processed as, "-" if no microversion.
The middleware does not emit anything if it detects that it's running
under eventlet, to prevent duplicate log messages.
Release notes provided as this will be a manual transition for folks
as it's an api-paste.ini change.
Change-Id: I3a597b06d3501c765e2d7805c6c1375d6f4e40db
Default policy for quota details was an admin only privilege
but it was able to get used and reserved resource data via
nova limits call even for non admin owners.
Horizon worked around the issue by using the limits API instead of the
os-quota-sets API. And this removes the need to workaround it and just
use the single os-quota-sets API.
This patch sets the quotas detail default policy to RULE_ADMIN_OR_OWNER.
Change-Id: I65b9de24a1310079a67e033606eaf2dde796cd48
Closes-Bug: #1618513