Allow ipa kernel/disk images to be specified via file:// designator
so they can be locally hosted in addition to being available over
http.
Change-Id: If3e32f30a7df27113721e15bff9ecaae16bfe8d4
Minor timing changes in an attempt to:
a) Make the logs less noisy
b) Wait a little bit longer for placement
records to be updated.
Change-Id: I4f64a2f5ab2d1696f244f083d5dc387c75cc1175
Changes the value of IRONIC_DIB_RAMDISK_OPTIONS to
'centos7 dhcp-all-interfaces' from 'ubuntu' to resolve
the issue in passing the ironic-python-agent-buildimage-dib
test.
Based on the comments of https://review.opendev.org/#/c/676239/
Change-Id: I92f44370cbd10c192c26cceb1589990f74985e92
Task: 36375
Story: 2005114
The ironic command has bene long deprecated and
we are finally removing it from python-ironicclient.
In order to remove it, we need to remove this reference
to the ironic.bash_completion file which is no longer
present nor necessary.
Change-Id: If2cae16ce7c24258ee720a6b8ac6e9bcdd2589aa
Attempting to devstack on bionic failed with:
Failed to restart libvirt-bin.service: Unit libvirt-bin.service not found.
devstack/lib/ironic was trying to figure out whether our libvirtd
service is called libvirtd or libvirt-bin based on:
- Are we on ubuntu?
- Does /etc/init.d/libvirtd not exist?
if is_ubuntu && [ ! -f /etc/init.d/libvirtd ]; then
libvirt_service_name="libvirt-bin"
But on this bionic, for whatever reason, my libvirtd is at
/usr/sbin/libvirtd.
However, `type libvirtd` succeeds in either case.
So this commit broadens the second part of that check accordingly.
Note, FWIW, that devstack's lib/nova_plugins/functions-libvirt checks
this way:
# Only Xenial is left with libvirt-bin. Everywhere else is libvirtd
if is_ubuntu && [ ${DISTRO} == "xenial" ]; then
LIBVIRT_DAEMON=libvirt-bin
else
LIBVIRT_DAEMON=libvirtd
fi
Change-Id: I94a86a96d5732db60c12399fcaf666f960461e3e
Currently we use writeback caching for disks
on our test vms, however that honors syncs and
IO could become blocked/locked if the sync has
not completed with the double virtualization that
occurs in CI.
In theory, we don't need to worry about the
buffer cache behavior for our test VMs.
Overall, it appears that there is a performance
gain of about 10-15% with making this change because
we're not honoring syncs to not lock-up IO.
Change-Id: Ib09dd7fd41c6b1cbc0e2b707bfc9e4ff8dfa6fad
This patch introduces standard Redfish virtual media boot
support to ironic.
The patch implements basic boot interface features along with
devstack plugin support for virtual media boot. Functionally,
redfish boot interface supports the same set of features as PXE.
Unlike other virtual media boot implementations (e.g. iLo), this
patch does not require user-built deploy/rescue/boot ISO images
for virtual media boot. Instead, ironic will build necessary images
out of common kernel/ramdisk pair (though user needs to provide
ESP image).
Story: 1526753
Task: 10389
Co-Authored-By: Shivanand Tendulker <stendulker@gmail.com>
Change-Id: I0db0a64c5ccf260f5a0695dbe994af1e11f71517
Add power state change callbacks of an instance to nova by
performing API requests. Whenever there is a change in the
power state of a physical instance (example a "power on"
or "power off" IPMI command is issued or the periodic
``_sync_power_states`` task detects a change in power state)
ironic will create and send a ``power-update`` external event
to nova using which nova will update the power state of the
instance in its database. By conveying the power state changes
to nova, ironic becomes the source of truth thus preventing
nova from forcing wrong power states on the instance during
the nova-ironic periodic sync. It also adds the possibility of
bringing up/down a physical instance through the ironic API
even if it was put down/up through the nova API.
Note that ironic only sends requests to nova if the target
power state is either "power on" or "power off". Other error
states will be ignored. In cases where the power state change
is originally coming from nova, the event will still be
created and sent to nova and on the nova side it will be a
no-op with a debug log saying the node is already powering on/off.
NOTE: Although an exclusive lock (task_manager.upgrade_lock()
method) is used when calling the nova API to send events,
there can still be a race condition if the nova-ironic power sync
happens to happen a nano-second before the power state change
event is received from ironic in which case the nova state will
be forced on the node.
Credit for introducing ksa adapter: Eric Fried <openstack@fried.cc>
Depends-On: https://review.opendev.org/#/c/645611/
Part of blueprint nova-support-instance-power-update
Story: 2004969
Task: 29424
Change-Id: I6d105524e1645d9a40dfeae2850c33cf2d110826
The devstack plugin was updated to configure basic ops before
ironic starts, so that we can put links to deploy images
in the ironic.conf.
Change-Id: I305fc3712b1ac0cf2fe64569729e236c7b614bb4
Story: #2006175
Task: #35699
currently it is impossible to use ironic-api for both internal and
public api at the same time when both of those are using (ssl
terminating) proxies as there's only one config option to override the
resource url's in responses ([api]public_endpoint).
This patch adds the http_proxy_to_wsgi middleware from oslo.middleware
to the ironic API service, which, with properly configured proxies,
makes the choice of correct URL automatic, and thus makes such scenario
possible.
As this middleware may potentially not properly handle some
endpoint URL schemas, leave the api.public_endpoint option as a backup,
but it will be ignored when proxy headers parsing is enabled.
Change-Id: I3ce6b0726b479c2835f8777957b2cb12d8098aec
Story: #2006303
Task: #36019
This is due to a failure in the logic where the UEFI
firmware objects are copied along with the ipxe loader.
tl;dr we need to have two separate if statements.
This reverts commit 0913c948423ed6c8ba147cf4e2a5a4de6945ec96.
Change-Id: Iaf78462a8b4abf4ad9c294c8575c67f5ade40a40
Recently shim and grub-efi-amd64-signed were moved from
debs to be installed by lib/ironic, which causes errors
since the latter does not exist for rpm based distros.
Change-Id: I87c5268bdd23c4978201b4b7cb2e4a4770190828
Trying to deploy OpenStack environment consisting of ironic nova
hypervisor & hardware Ironic node (not VM Ironic node) with devstack
got failed. When trying this, followings are set in devstack local.conf
file; "VIRT_DRIVER=ironic", "IRONIC_BOOT_MODE=uefi' and
"IRONIC_IS_HARDWARE=true".
Failure is due to three bugs in script in "devstack" & "Ironic":
(1) function configure_nova_hypervisor in
devstack/lib/nova_plugins/hypervisor-ironic,
(2) function install_ironic in ironic/devstack/lib/ironic and
(3) function configure_ironic_dirs in ironic/devstack/lib/ironic.
Because "VIRT_DRIVER=ironic" & "IRONIC_IS_HARDWARE=true" is set,
devstack doesn't install libvirt related packages. So, attempt to copy
files/directories to filesystem paths to be created when installing
libvirt related packages gets failed.
When "IRONIC_BOOT_MODE=uefi" is set, bug (2) & (3) occurs. Because
function install_ironic & configure_ironic_dirs tries to configure
libvirt related settings (e.g. modify /etc/libvirt/qemu.conf) and
there is no filesystem path related to libvirt, error occurs.
This commit fixes bug (2) by adding "if" clause to determine Ironic
node is hardware or not and to skip libvirt related operations when
Ironic node is hardware.
Launchpad URL of 1st bug:
https://bugs.launchpad.net/devstack/+bug/1834985
Change-Id: I73459d3c8c31329f17b609a3704a43738576d33c
Story: 2006174
Task: 35697
Trying to deploy OpenStack environment consisting of ironic nova
hypervisor & hardware Ironic node (not VM Ironic node) with devstack
got failed. When trying this, followings are set in devstack local.conf
file; "VIRT_DRIVER=ironic", "IRONIC_BOOT_MODE=uefi' and
"IRONIC_IS_HARDWARE=true".
Failure is due to three bugs in script in "devstack" & "Ironic":
(1) function configure_nova_hypervisor in
devstack/lib/nova_plugins/hypervisor-ironic,
(2) function install_ironic in ironic/devstack/lib/ironic and
(3) function configure_ironic_dirs in ironic/devstack/lib/ironic.
Because "VIRT_DRIVER=ironic" & "IRONIC_IS_HARDWARE=true" is set,
devstack doesn't install libvirt related packages. So, attempt to copy
files/directories to filesystem paths to be created when installing
libvirt related packages gets failed.
When "IRONIC_BOOT_MODE=uefi" is set, bug (2) & (3) occurs. Because
function install_ironic & configure_ironic_dirs tries to configure
libvirt related settings (e.g. modify /etc/libvirt/qemu.conf) and
there is no filesystem path related to libvirt, error occurs.
This commit fixes bug (3) by adding "if" clause to determine Ironic
node is hardware or not and to skip libvirt related operations when
Ironic node is hardware.
Launchpad URL of 1st bug:
https://bugs.launchpad.net/devstack/+bug/1834985
Change-Id: I28ab77c063e0ce8da36f1368ac456cd910a9166f
Story: 2006174
Task: 35698
Because the shim and grub-efi-amd64-signed packages are specific to
x86_64 [0][1], they should only be installed when deploying to an x86_64 node.
This removes the packages from the debs/ironic file and moves their
installation to lib/ironic, allowing us to install it them based on architecture.
[0] https://packages.ubuntu.com/eoan/shim
[1] https://packages.ubuntu.com/eoan/grub-efi-amd64-signed
Change-Id: I73cab832cf8099c02b3e29df84618c88e5fb5065
Makes some minor requested changes to the
devstack script that were added/changed
in order to support UEFI/GRUB2 booting
in CI.
Change-Id: I6a582cc2970911c9c827309d034e4553a09b66df
The ones for ironic-python-agent itself are defined in devstack.
This changes adds similar variables for ironic-python-agent-builder
and migrates the ironic-python-agent ones here to avoid confusion.
Change-Id: Ic7eef9c8741ec2900401556f4053a4749b652d7c
mdns AND IPv6 Neighbour Discovery Protocol use multicast packets
and the macvtap interface drops these packets by default.
Since there is no way to tell libvirt to make this better,
lets at least use the hook to make the macvtap interface
change such that multicast packets will pass.
With this, iPXE should work... and mdns should be testable in CI.
Change-Id: I397d211675fd7668b8fd19e989d740d6bad2c70e
Fixes the grub2 based devstack logic and adds a grub2 CI job
such that the ironic team can safely clean-up some of the PXE
code without fear of breaking the grub2 scenario.
Story: 2003936
Task: 27724
Change-Id: Ieb395bf35e2689741a243c11b56d08a237b200bc
If enabled, rabbit is required for all ironic services, so it makes
no sense to only configure it when API is enabled. This seems to
break multinode grenade, since `is_service_enabled ir-api` returns
false on the subnode. Try to configure the RPC backend in all cases
when IRONIC_RPC_TRANSPORT is "oslo" (not JSON RPC).
Also move the automated_clean option to the conductor where it belongs.
Change-Id: I6e046c6b6e1e4c0ca7bfd5fb9ce5892c0298fb78
devstack may be run as some other non-root user, and the service
will fail to start if there is no stack user available.
Change-Id: Ib1cfa6a1b0859a1e2680055ce0394053db1c307e
Signed-off-by: michaeltchapman <woppin@gmail.com>