Add support for explicitly requiring UEFI or BIOS firmware from
images by taking hw_firmware_type metadata into account.
blueprint vmware-boot-uefi
Change-Id: Ibfb57c55569e430a846003472a49a536e94e6a48
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
Since we no longer use usage records, we don't need the nova-manage
command to sync usage records with actual resource consumption.
Co-Authored-By: melanie witt <melwittt@gmail.com>
Part of blueprint cells-count-resources-to-check-quota-in-api
Change-Id: I55f7a2b6e15eec6e6ec97be23903325ad22bd4d4
There are quite a few changes here as this is not only handling
uuids for the hypervisor id but it's also a refactor in several
APIs for consistency.
The main changes are detailed in the REST API Version History
doc in this change, but to summarize the changes:
* Hypervisor and service IDs are handled as the UUIDs for those
resources; this is necessary for accurately working with these
resources across multiple cells.
* The 'servers' and 'search' routes are deprecated and folded into
the index and detail methods as query parameters, validated using
json schema.
* The show method will also be able to return the list of servers
hosted on the given hypervisor using the with_servers query
parameter.
* The marker used when paging over lists of hypervisors is the
compute node UUID.
* Using the hypervisor_hostname_pattern query parameter will not
work with paging parameters.
* API reference docs are updated for the detailed changes.
* Functional and unit tests are provided for all changes.
Part of blueprint service-hyper-uuid-in-api
Change-Id: I828350c179df8bcfa4739910abeafaba2f96982b
This patch introduces a new microversion to identify services by uuid
instead of id, to ensure uniqueness across cells. GET /os-services
returns uuid in the id field, and uuid must be provided to delete a
service with DELETE /os-services/{service_uuid}.
The old PUT /os-services/* APIs are now capped and replaced
with a new PUT /os-services/{service_uuid} which takes a uuid path
parameter to uniquely identify the service to update. It also restricts
updates to nova-compute services only, since disabling or forcing-down
a non-compute service like nova-scheduler doesn't make sense as it
doesn't do anything.
The new update() method in this microversion also avoids trying to
re-use the existing private action methods like _enable and _disable
since those are predicated on looking up the service by host/binary,
are confusing to follow for code flow, and just don't really make sense
with a pure PUT resource update method.
Part of blueprint service-hyper-uuid-in-api
Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>
Change-Id: I45494a4df7ee4454edb3ef8e7c5817d8c4e9e5ad
All RPC topic opts were deprecated in Ocata.
This patch removes all *_topic opts from the code.
Change-Id: I41a6be48380999c49d6db3ee5221174a41014002
Implements: blueprint centralize-config-options-pike
This is the 4th patch of the series,
this patch adds a new microversion
in API to support adding tags when
booting instances.
Implemetes: blueprint support-tag-instance-when-boot
Change-Id: Ifcaaf285c8f98a1d0e8bbbc87b2f57fbce057346
This patch marks the network related quota in the quota-class API
as deprecated in the 2.50 microversion. Also rewrite the release note for
2.50 microversion, change to describe the API change instead of the history.
Change-Id: Ida5518b7d43e85d9f30b11ed2819025a190aefd6
Allow Cinder to use external events to signal a volume extension.
1) Nova will then call os-brick to perform the volume extension
so the host can detect its new size.
2) Compute driver will resize the device in QEMU so instance can detect
the new disk size without rebooting.
This change:
* Adds the 'volume-extended' external event.
The event tag needs to be the extended volume id.
* Bumps the latest microversion to 2.51.
* Exposes non-traceback instance action event details for
non-admins on the microversion. This is needed for the
non-admin API user that initiated the volume extend
operation to be able to tell when the nova-compute side
is complete.
Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>
Blueprint: nova-support-attached-volume-extend
Change-Id: If10cffd0dc4c9879f6754ce39bee5fae1d04f474
v2.1 API which does not return the 'server_groups' and
'server_group_members' quotas in GET & PUT os-quota-class-sets
API response. v2 API used to return those keys in API response.
Also filter out the network related quotas from os-quota-class-sets
APIs
Fixing this with microversion.
Closes-Bug: #1701211
Closes-Bug: #1693168
implement-blueprint fix-quota-classes-api
Change-Id: I66aeb7a92fb5ee906fead78030bd84a2e97916e8
This patch replaces the scheduler's use of GET
/resource_providers?resources=XXX with GET
/allocation_candidates?resources=XXX.
In doing so, we move the interaction with the placement API out of the
scheduler driver interface and up into the scheduler manager. This
allows us to make fewer changes to the underlying HostManager and
SchedulerDriver interfaces and isolate communication with the placement
API in a single place.
The provider_summaries part of the response from GET
/allocation_candidates is used to generate the UUIDs that winnow the
number of compute nodes retrieved by the filter scheduler during
scheduling. Following patches will add in support for actually doing
the claim from the scheduler against one or more resources providers by
examining the allocation_requests part of the HTTP response and picking
one that contains the host the scheduler picked during its _schedule()
loop.
Change-Id: I1c0bd2987dcbc38f23b71db2bc8e3267f85168c8
blueprint: placement-allocation-requests
Nova change I565617e05acf33e6254ea091b88d975270ffde05 added
the support for creating a server with tagged VIFs and BDMs
with the xenapi driver, but did not contain a release note.
This adds the release note, and much of the text is copied
from Tempest change I9fe520bc9b68d0bc7f879617f2cd27dd1029e4de.
Part of blueprint virt-device-role-tagging-xenapi
Change-Id: I330087944203ab6aa9cf64fd4d3f1909ce44b435
A new 1.10 API microversion is added to return information that the
scheduler can use to select a particular set of resource providers to
claim resources for an instance.
The GET /allocation_candidates endpoint takes a "resources" querystring
parameter similar to the GET /resource_providers endpoint and returns a
dict with two top-level elements:
"allocation_requests" is a list of JSON objects that contain a
serialized HTTP body that the scheduler may subsequently use in a call
to PUT /allocations/{consumer_uuid} to claim resources against a
related set of resource providers.
"provider_summaries" is a JSON object, keyed by resource provider UUID,
of JSON objects of inventory/capacity information that the scheduler
can use to sort/weigh the results of the call when making its
destination host decisions.
Change-Id: I8dadb364746553d9495aa8bcffd0346ebc0b4baa
blueprint: placement-allocation-requests
Replaces reading quobyte.info xarg with a range
of checks on a given mountpoint. Adds several
unit tests to verify the different check results.
Adds --disable-xattrs option to mount calls and
a release notes file.
Closes-Bug: 1659328
Change-Id: I1c07e513af14b769c257c72e51132f81e61673c7