I don't particularly care about this use case (although the localfs
code should perhaps go away), but it was a nice contained example
of a privsep user which wasn't just calling a command line.
This patch also starts to layout what an API to the privsep'd code
might look like. For now its modelled on python's os module, because
that's where all the operations we perform are coming from.
The rootwrap configuration is cleaned up as we remove users.
Co-Authored-By: Tony Breeds <tony@bakeyournoodle.com>
Change-Id: I911cc51a226d6af29d63a7a2c69253de870073e9
When forcing a destination host during live migration, conductor
bypasses the scheduler, performs some pre-migration checks and then
casts to the specified destination compute host directly.
With change I40b5af5e85b1266402a7e4bdeb3705e1b0bd6f3b we are still
bypassing the scheduler but conductor will attempt to allocate
resources against the specified destination host, which could fail
and result in the live migration failing even though the force flag
was specified in the API.
This change simply adds a release note for the new behavior which
was missing from the original fix.
Change-Id: I1811dfa59865c0a878522007e0070f0fde8344f0
Related-Bug: #1712008
The ceph 'rbd' library (librados) now supports Python 3 and, by
extension, unicode strings [1]. There is no need to keep these encode
calls around: if a user is running nova under Python 3, then it is safe
to assume that they are using a Python 3-compatible version of librados.
[1] https://github.com/ceph/ceph/blob/v11.1.0/src/pybind/rados/rados.pyx#L30-L36
Change-Id: Ic1afb3e66bd0991047f97fa74f9d2fbbb837401a
oslo_reports accepts a few config options that cannot be used at
the moment since nova does not pass the config object.
This change ensures that we properly set up oslo_reports when
starting the nova services.
Change-Id: Iacdca854027777647861984405a4c7246f117eee
Closes-Bug: #1705450
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 e5080c7330
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