This adds a new executable /usr/bin/ironic (cool that we no longer have
a CLI with this name) that starts API and conductor together in the same
process. When an RPC host name matches the current one, the call is not
routed through the remote RPC, a local function call is done instead.
Story: #2009676
Task: #43953
Change-Id: I51bf7226aea145dc7c8fd93d61caa233ca16c9c9
The prepare_service call from ironic.common.service is changed to also
configure guru meditation and profiler. A new call prepare_command is
provided for the cases it's not required.
Change-Id: I5b9b7b7bc827c8bcda06e9a967deae8577ad87f4
THe -cache-inodes is already default on UNIX like operating systems and
it's not safe on other systems that do not have unique inode numbers.
Change-Id: I90b77b3a2056a7e627351d2d9e824def868a7b8b
The NoValidDefaultForInterface exception is a little misleading
in that if one doesn't have the base interface enabled, and they
attempt to enable a hardware type which requires or only supports
disabled interfaces, they will also get an exeption. The reality
is we need to suggest for them to look at enabling the interfaces
before looking at the default interface overrides, because logically
the brain jumps to setting a default before checking the interface
settings.
Change-Id: I50d4381e11da96cb7ae0ee8cbda18534380bd471
Changes a neutron call to be project scoped as system
scoped can't create a resource and, and removes the unset
which no longer makes sense now that
I86ffa9cd52454f1c1c72d29b3a0e0caa3e44b829
has merged removing the legacy vars from devstack.
Also renames intenral use setting of OS_CLOUD to IRONIC_OS_CLOUD
as some services were still working with system scope or some sort
of mixed state occuring previously as some of the environment variables
were present still, however they have been removed from devstack.
This change *does* explicitly set an OS_CLOUD variable as well on
the base ironic job. This is because things like grenade for Xena
will expect the variable to be present.
Depends-On: https://review.opendev.org/c/openstack/devstack/+/818449
Change-Id: I912527d7396a9c6d8ee7e90f0c3fd84461d443c1
In all of the copying/pasting/repeating, some misalignments between
labels/parameters utilized for the RBAC tests occured.
Nothing serious, everything seems to be just fine.
Change-Id: Ib0ded5a53e586e10006b066241f4b4a92bb2c463
Currently the default boot.ipxe is not suitable for ironic-inspector
in a standalone configuration. This change adds a new option
[pxe]ipxe_fallback_script that makes boot.ipxe fall back to the provided
script.
Story: #2009294
Task: #43982
Change-Id: Id5547885e75beafb4423e9e2056c79c54b286275
This module contains a lot of trivial single-line functions that make
reading it unnecessarily complicated. This change removes some of them.
Change-Id: Ie26c011b5ed3cb406c5cc4e2f50bbbf622d3a8c8
There are a few places in unit tests where we rely on Redfish constants
having well-known values. Use constants themselves instead.
An even more problematic place is _set_boot_device: it relies on storing
Redfish constants in driver_internal_info. With the future switch to
enums, it will no longer be possible. Use Ironic constants and provide a
compatibility layer.
Change-Id: I8e075f808e013afd778dd7cdc0927fe339309b70
When using the node managed by the `irmc` hardware type,
if the port number of the bmc address is manually specified,
the following error will occur:
```
Value '443' is not supported for 'irmc_port'
```
However iRMC supports 80 and 443 ports, and default to 443.
The reason for this error is that the type of irmc_port is not converted to int.
Story: #2009671
Task: #43915
Signed-off-by: Zhou Hao <zhouhao@fujitsu.com>
Change-Id: I4e9274de09758fdb468382a7f88298a279f43e92
RedfishManagement.get_mac_addresses has two problems:
* It returns a dict while the base class documents returning a list
* The dict's values are Redfish-specific values
This change fixes this function to return a list and significantly
simplifies the related create_ports_if_not_exists.
Change-Id: I329cabe04662d0d668d4c3e04ecede5b4fdec6c6
A node's interface can be temporarily overriden in instance_info.
However, some parts of the Ironic code still used a node's interface
attribute directly. This change adds a node get_interface method
and updates various parts of the Ironic code to use it.
Change-Id: Ifdaa21383f71b501bccb6cf8fe80e5b34661b6ae
iPXE is the recommended boot method (when virtual media is not
available). Now that a pre-built binary is available for AARCH64, there
are very few reasons to use plain PXE over it.
Change-Id: Iedd70ac2ec0a59c531f5c811b4f5c65a2aafff4d
Redfish has become an established technology with growing popularity.
By enabling it by default we make it easier for operators to use Ironic,
especially its advanced features, out of box.
Bump stevedore to match sushy.
Change-Id: I94dd4066ac598a7e5c2e0812e1ff286de5d164a2
Be more precise when describing the conditions for automatic
recovery from power failures ('maintenance type' is a term
we use nowhere else).
Change-Id: Iaf14c0fc73f8c97b9d8669485011966a650c21a8
In some cases we handle the same exception twice in a row: in agent_base
and in deployments.do_next_deploy_step. This change avoids it.
Also make deploy step error messages more uniform across the board.
Change-Id: Ic84c04118b1a85b10a761fc58796827583a5b086
As with WS-Man iDRAC API setting boot device requires creating BIOS
job and there can be only 1 open job per subsystem present in iDRAC,
there is validation to check that the job queue is empty before
continuing setting boot device. This does not work well for cases when
using autoupdatescheduler that creates `Repository Update` job that
stays Scheduled until executed and then followed by new Scheduled
`Repository Update` job.
This patch allows non-BIOS jobs to be present in the queue when setting
boot device. This will still fail for cases when there are BIOS jobs
present. In such cases should consider moving to idrac-redfish that
does not create BIOS or any other job to set boot device.
Story: 2009251
Task: 43437
Change-Id: I91e9ba3024a85897aeead21cede57464294b409b
According to the current document, people who do not understand the
relevant principles may think that "Configuring ironic-api behind
mod_wsgi" is necessary.
Indicate that mod_wsgi part is not necessary but recommended.
task: 43714
Change-Id: I405c483506f79a830e9378db3dd45c8c235a6817
The kickstart template expects a dictionary with 'ks_options'
as the key. Instead build_kickstart_config_options function
returns a dict with keys 'liveimg_url', 'agent_token' and
'heartbeat_url'.
This change fixes this problem by returning a dictionary of
dict with 'ks_options' as key and the dictionary with
keys 'liveimg_url', 'agent_token' and heartbeat_url' as
value.
Fix a bug where the deploy() method of anaconda deploy
interface where it did not return states.DEPLOYWAIT instead
it returned 'None' which caused the instance to go straight to
'active' instead of 'wait call-back'.
Fix issues in the default kickstart template where heartbeat was
missing 'callback_url' parameter and the HTTP method should be
'POST' not 'PUT'.
Fix issues with automated cleaning when anaconda deploy interface
is used.
Anaconda deploy interface could not deploy tarballs as
the disk image sent to the anaconda interface via liveimg --url
kickstart command does not include any file extension. When
no file extension is present the kickstart command liveimg --url
assumes the disk is a mountable partiton image. We fix this
problem by enabling the user to specify file extensions using
a glance image property named 'disk_file_extension' on the OS
image.
Co-Authored-By: Ruby Loo <opensrloo@gmail.com>
Change-Id: I556f8c9efbc5ab0941513c3ecaa2aa3ca7f346ae
According to the original document, before configuring ironic-api
behind mod_wsgi and restarting the httpd service, the ironic-api
service has been started. The port has been monitored by
ironic-api.service, and the error "Apache fails to start, Address
already in use" will be reported when the httpd service is restarted.
Add a description of stopping and disabling the ironic-api service
before starting httpd service.
task: 43713
Change-Id: Idc965d80d0fbaa348453a94ae45318157b2c0d0c