859 Commits

Author SHA1 Message Date
Jenkins
3c7a8185e6 Merge "Change default for [notifications]/default_publisher_id to $host" 2017-08-29 06:07:53 +00:00
Jenkins
2100bed264 Merge "Deprecate CONF.monkey_patch" 2017-08-28 15:45:23 +00:00
Stephen Finucane
d983234288 conf: Allow users to unset 'keymap' options
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
2017-08-28 09:53:50 +01:00
Matt Riedemann
27cd4dd70b Change default for [notifications]/default_publisher_id to $host
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
2017-08-25 18:54:35 -04:00
Matt Riedemann
a3bc1b067b Deprecate CONF.monkey_patch
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
2017-08-25 18:47:47 -04:00
Jenkins
c35ad953e4 Merge "nova-manage: Deprecate 'cell' commands" 2017-08-23 20:44:30 +00:00
Jenkins
f1f55d48cc Merge "Assume neutron port_binding extensions enabled" 2017-08-23 16:58:08 +00:00
Stephen Finucane
dcef0aa666 nova-manage: Deprecate 'cell' commands
The Cells v1 feature is deprecated, meaning we can also deprecate the
respective commands in nova-manage. Do this.

Change-Id: I6db62a16272c74215944db164830515b774f5085
2017-08-23 17:16:15 +01:00
John Garbutt
7f38e25e7d Assume neutron port_binding extensions enabled
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
2017-08-23 13:44:32 +00:00
Jenkins
e783c9db95 Merge "Fix reporting inventory for provisioned nodes in the Ironic driver" 2017-08-16 15:23:00 +00:00
Dmitry Tantsur
9ed692bf8c Fix reporting inventory for provisioned nodes in the Ironic driver
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
2017-08-15 15:05:34 +02:00
Jenkins
1b909387b6 Merge "Update reno for stable/pike" 2017-08-11 15:27:49 +00:00
Jenkins
7dcecf27f4 Merge "Deprecate bare metal filters" 2017-08-11 15:24:49 +00:00
c318d9b7ac Update reno for stable/pike
Change-Id: I11c2122d08badcd8f21382623b799a269e671b41
2017-08-11 12:29:24 +00:00
Dmitry Tantsur
b4295ef049 Deprecate bare metal filters
This change deprecates the Exact filters, and two options commonly used
to enable them. Custom resource classes should be used instead.

Change-Id: I843353427c90142a366ae9ca63ee4298b4f3ecd4
2017-08-11 10:40:57 +00:00
Jenkins
6ca447646a Merge "nova-manage: Deprecate '--version' parameters" 2017-08-10 21:02:05 +00:00
Jenkins
f342a42550 Merge "Add policy granularity to the Flavors API" 2017-08-10 11:47:12 +00:00
Jenkins
fc472decb8 Merge "Mark Chance and Caching schedulers as deprecated" 2017-08-10 10:57:37 +00:00
Jenkins
40a2b85b08 Merge "Remove ram/disk sched filters from default list" 2017-08-10 10:54:00 +00:00
Jenkins
35cf533e12 Merge "Add release note for shared storage known issue" 2017-08-10 00:48:07 +00:00
Chris Friesen
2fe96819c2 Remove ram/disk sched filters from default list
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
2017-08-09 21:10:19 +00:00
Jenkins
1ce3d78982 Merge "Cleanup release note about ignoring allow_same_net_traffic" 2017-08-09 19:04:13 +00:00
Dan Smith
d48bba18a7 Mark Chance and Caching schedulers as deprecated
FilterScheduler with Placement should replace both of these. Mark them
as deprecated now so the timer starts.

Change-Id: Ia7ff98ff28b7265058845e46b277317a2bfc96d2
2017-08-09 10:53:53 -07:00
Matt Riedemann
0d31698d9e Add release note for shared storage known issue
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
2017-08-09 11:17:45 -04:00
Sylvain Bauza
216ccb5b92 Add a prelude section for Pike
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
2017-08-08 21:56:19 -04:00
Matt Riedemann
0cae8d50fa Cleanup release note about ignoring allow_same_net_traffic
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
2017-08-08 12:43:20 -04:00
Jenkins
fc454044d6 Merge "hardware offload support for openvswitch" 2017-08-03 19:08:06 +00:00
Stephen Finucane
59dd49978c nova-manage: Deprecate '--version' parameters
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
2017-08-03 19:43:29 +01:00
Moshe Levi
ccc1def0f5 hardware offload support for openvswitch
In Kernel 4.8 we introduced Traffic Control (TC see [1]) hardware offloads
framework for SR-IOV VFs which allows us to configure the NIC [2].
Subsequent OVS patches [3] allows us to use the TC framework
to offload OVS datapath rules. This feature is supported in OVS 2.8.0.

This patch adds support for VIF_TYPE_OVS with vnic_type direct

blueprint sriov-ovs-offload

[1] http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf
[2] https://patchwork.ozlabs.org/patch/738176/
[3] https://mail.openvswitch.org/pipermail/ovs-dev/2017-April/330606.html

Change-Id: I3f38954bc5cf7b1690182dc8af45078eea275aa4
2017-08-03 13:30:30 +00:00
Jenkins
55a832b4cc Merge "Accept any scheduler driver entrypoint" 2017-08-02 16:57:52 +00:00
Jenkins
8e56bdb1dc Merge "Add release note for PUT /os-services/* for non-compute services" 2017-08-02 10:00:54 +00:00
Sylvain Bauza
1e5c7b52a4 Accept any scheduler driver entrypoint
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
2017-08-01 16:50:10 +00:00
Matt Riedemann
3414ab14ca Deprecate cells v1
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
2017-08-01 11:07:55 -04:00
Matt Riedemann
598314a4bb Add release note for PUT /os-services/* for non-compute services
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
2017-08-01 10:21:43 -04:00
Jay Pipes
23c4eb3438 claim resources in placement API during schedule()
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
2017-07-27 17:56:28 -07:00
Jenkins
d38c6f489b Merge "deprecate `wsgi_log_format` config variable" 2017-07-27 02:07:01 +00:00
Sean Dague
27c341c1bf deprecate `wsgi_log_format` config variable
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
2017-07-26 21:14:44 +00:00
Jan Gutter
2bd008ef5c Netronome SmartNIC Enablement
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>
2017-07-26 19:03:04 +00:00
Jenkins
bed59a47b7 Merge "Ironic: Support boot from Cinder volume" 2017-07-25 15:18:35 +00:00
Jenkins
62c4535a85 Merge "request_log addition for running under uwsgi" 2017-07-25 04:47:19 +00:00
Satoru Moriya
3e1a3c9f82 Ironic: Support boot from Cinder volume
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
2017-07-25 03:57:51 +00:00
Jenkins
19f78e2f5f Merge "Add online migration to move quotas to API database" 2017-07-25 02:07:57 +00:00
melanie witt
b291061cb1 Add online migration to move quotas to API database
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
2017-07-24 18:36:46 -04:00
Sean Dague
aa45a6f3ab request_log addition for running under uwsgi
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
2017-07-24 14:23:38 -04:00
Jenkins
716dabdb0e Merge "Deprecate useless quota_usage_refresh from nova-manage" 2017-07-23 16:52:16 +00:00
Jenkins
422f9b5646 Merge "Implement interface attach/detach in ironic virt driver" 2017-07-23 14:14:24 +00:00
Jenkins
8df1014a22 Merge "doc: Switch to openstackdocstheme" 2017-07-21 20:16:48 +00:00
Jenkins
fe46cfa301 Merge "Change default policy to view quota details" 2017-07-21 20:02:20 +00:00
Andrey Volkov
dcc2934921 Change default policy to view quota details
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
2017-07-21 15:09:23 +00:00
Vasyl Saienko
66f962d9b9 Implement interface attach/detach in ironic virt driver
This patch implements attach_interface, detach_interface
methods in Ironic virt driver.

Implements: blueprint ironic-hotplug-interfaces
Co-Authored-By: Vladyslav Drok <vdrok@mirantis.com>
Depends-On: Idc9dc37b11950e3aa2864a0a90d6ec2e307926a3
Change-Id: I48c4706b3eb6e0a5105e463236870921d55dbd93
2017-07-21 14:54:57 +00:00