| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
Specify the schema version for network_data and node, otherwise the
latest one is used.
Also fix one test where the error messages was changed.
Change-Id: I4a614d7e73348bbe6c355a40881b013cbfe00b03
(cherry picked from commit 55b9579f14ea08a2dc732336d8f552cc14ab895d)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Story: 2003514
Task: 41940
Conflicts:
ironic/drivers/modules/redfish/raid.py
ironic/tests/unit/drivers/modules/redfish/test_raid.py
Change-Id: I753c4b00c0a64bcdc89c9bc0afd46f1211f7847b
(cherry picked from commit 29364b7fb40327dc277c535e5b829133274ad420)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes ``redfish`` RAID interface workflow to not create more than 1
logical disks per controller at the same time when controller does not
support 'Immediate' application time and system needs rebooting.
With this fix virtual disks are grouped by controller and executed
in batches when reboot is required.
This enables ``redfish`` RAID interface to be used with iDRAC systems
directly as although there are many controllers that support 'Immediate'
application time, they do it only when system has completed loading.
System intermittently completes loading after IPA starts executing
clean or deploy steps rendering controllers not supporting 'Immediate'
apply time and requiring reboot. This fix handles such scenario
instead of failing to create more than 1 virtual disk.
Story: 2009863
Task: 44529
Conflicts:
ironic/drivers/modules/redfish/raid.py
Change-Id: Ia2ce34f09695731b0f48798f662006c4904e2223
(cherry picked from commit d7d8f8754b36af4b686ce540e699fc5cb945c10c)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Redfish Tasks do not report failures via HTTP status codes. Instead
have to check TaskState and TaskStatus.
Story: 2009767
Task: 44244
Change-Id: I8f9a89d18d22d18a2e695fde894bcd27f18f8954
(cherry picked from commit 196d8f7fc055667af501ea0569ba5c501a2c6e8d)
|
|/
|
|
|
|
|
|
|
|
|
|
| |
The issue with standard Redfish virtual media boot has
been fixed now. Update to restrict use of redfish-virtual-media
based on iDRAC firmware version.
Conflicts:
ironic/drivers/modules/redfish/boot.py
Change-Id: I8ead1d24a9bd502b64fe7dd058e77550fcee141c
(cherry picked from commit 73040c88d99f066644277f32e86d196305fc8596)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The anaconda deploy interface wasn't handling configdrive
correctly. This fixes:
- the code was incorrectly treating the config drive as a dict,
whereas it could also be in iso6600 format,
gzipped and base64-encoded. It is handled properly now.
- kickstart commands that deal with the config drive were added
to the end of the kickstart file. Which means that they are
executed after an ironic API request is sent to ironic to
indicate that the node has been provisioned and is ready
to be rebooted. Which means that there is a possible race
condition wrt these commands being completed before the node
is powered off. This has been fixed by putting the API request
at the end of the kickstart file. Also, a sync was added to
ensure that all modifications are written to disk.
- extra newlines ('\n') were incorrectly added to the user data content.
This broke the content-type decoding and cloud-init was unable to
proces them. The extra newlines have been removed.
Conflict: ironic/common/pxe_utils.py, build_kickstart_config_options()
and prepare_instance_kickstart_config() due to code changes in master
that aren't here. Manually fixed.
Change-Id: If00342a1bfa3e87b2094061b0e2b0b69de3a8a4f
(cherry picked from commit 09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee)
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The anaconda deploy interface was saving internal information in
the node's instance_info, in the user-facing 'stage2' and
'ks_template' fields. This broke rebuilds using a different image
with different stage2 or template specified in the image properties.
This has been fixed by saving the information in the node's
driver_internal_info instead.
Addresses comments/nits from
https://review.opendev.org/c/openstack/ironic/+/827924.
Conflict: ironic/common/pxe_utils.py & ironic/drivers/modules/pxe.py
because Node.[set|del]_driver_internal_info() are only avail in
master; changed to copy the dict, make the changes, and then set
the node's driver_internal_info to the updated dict.
Change-Id: Id9428518d21290fb38a0f7471a2cb69a6cb3ffb2
(cherry picked from commit ab68c9d88b76e4ff83f9dffddcc204676fdb50d5)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The anaconda deploy interface has a few issues that are
addressed here:
- fixes logic in get_instance_image_info() for anaconda. If the
ironic node's instance_info doesn't have both 'stage2' and
'ks_template' specified, we weren't using any values from the
instance_info. This has been fixed to use values from
instance_info if specified. Otherwise, they are set as follows:
The 'stage2' value is taken from the image properties.
We use the value for 'ks_template' if it is specified in the
image properties. If not (since it is optional), we use the
config option's '[anaconda]default_ks_template' value.
setting.
- For anaconda's stage2 directory, we were incorrectly creating a
directory using the full path of the stage2 file. It now
correctly creates the right directory.
- The anaconda deploy interface expects the node's instance_info
to be populated with the 'image_url'; added code to do that in
PXEAnacondaDeploy's prepare() method.
- When the deploy is finished and the bm node is being rebooted,
we incorrectly set the node's provision state to 'active'
instead of doing it via the provisioning state machine mechanism.
- The code that was doing the validation of the kickstart file was
incorrect and resulted in errors; this has been addressed.
- The '%traceback' section in the packaged 'ks.cfg.template' file
is deprecated and fails validation, so it has been removed.
Conflict: ironic/common/pxe_utils.py, cache_ramdisk_kernel(), due
to code changes in master that aren't in xena. Manually fixed.
Change-Id: I953e948bcfa108d4c8e7b145da2f52b652e52a10
(cherry picked from commit 06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb)
|
|/
|
|
|
|
|
|
|
|
|
| |
iPXE derives its "file names" from the last component of the URL path.
In case of the conductor's local server it's {mode}_{component} where
mode = deploy/rescue and component = kernel/ramdisk. However, in case
of Swift/Ceph, the last component will be different. This patch accounts
for it.
Change-Id: I7ba5545032069509a9c302abe1c21537ccb5ec8a
(cherry picked from commit c975eaa8c67d917feac75c9053cddcfb708e08a3)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Images can be generated on fly, so let us respect the decision of the
server to disable caching.
Also disable caching for file images: it's just waste of space.
Change-Id: I425b1915c73354af90329d5b3a1fb0a616adaa93
(cherry picked from commit 7043a414a8646eaf5841e87c3cf9a4790d0f8a39)
|
|/
|
|
|
|
|
|
|
|
| |
Node history was particularly affected: limit was not converted from
string to integer, so "next" link was never added.
Add some safeguards to the generic API code.
Change-Id: I1328e2f07621bf7e39b96eb4a7ddb66c9a2b65bb
(cherry picked from commit 55144d3bd262be35c7a034fea083c3ed73fd63d8)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Story: 2009772
Task: 44249
Change-Id: I8e559b3c7e833c361e12d01d744510ac5c8d8cf6
(cherry picked from commit b824ea7fa8874e63cfe11bc82ce0dc049680344f)
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Some transient errors can ultimately cause the client to need to be
completely restarted due to cached connection data.
Ironic now explicitly removes the cache entry when a sushy
AccessError or python AttributeError is detected originating
from the library. This will now result in the prior cached connection
object to be discarded, and upon the next attempt to interact with
the same node, a new connection will be launched.
This will result in new sessions being created, but in all likelihood
the prior session had already timed out or had been administratively
removed. Sushy's code, as of
https://review.opendev.org/c/openstack/sushy/+/820076
will raise SessionService lookup access errors as AccessErrors.
Prior to that change, they should have been raised as AttributeError
as the previous call sould have returned None to be used as an object.
*Also* Includes follow-up change Ia59f774c9340e3a6fa63418afedf12098c709052
squashed into this change, and necessary backport friendly mock of
AccessError which had changed since this release of ironic.
Change-Id: Icc6e5dd74d9f15e679a7e764fe49238ed6b8dc1e
Story: 2009719
Task: 44107
(cherry picked from commit 1439af27ba2bd31fb85369754c648a45ee9ca14b)
(cherry picked from commit 01997c8418b9e6ade47437b09dd9412310b90eac)
(cherry picked from commit e3e7deaf48a5315fe10350e8a87b2fcc4e189406)
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since the default value resource_url is None, make sure the
parameter is set to 'ports' when getting all ports.
Change-Id: Id603ae5a4a802dfc8f866b15c8d327d95eba9310
(cherry picked from commit 2ac740e09d44bb91d0ec4180a1b5e500bc844f7c)
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since the default value resource_url is None, make sure the
parameter is set to 'nodes' when getting all nodes.
Change-Id: I6cc52eb56c7888a433d24aa79154143d6f35cf83
(cherry picked from commit 69227c66c25d49beab3210bdf08f53cbde78d87f)
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some adapters may have addresses that are not MAC. See for example:
https://github.com/metal3-io/ironic-image/issues/314
Conflicts:
ironic/drivers/modules/inspect_utils.py
ironic/tests/unit/drivers/modules/test_inspect_utils.py
Change-Id: I0023e0750e372185747ca28cddd2a8dda110dd7f
(cherry picked from commit 9308c0a0b689fec5ca72ecb008a824ea23667a07)
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
On neutron routed provider networks IP allocation is
deferred until 'binding:host_id' is set. When ironic
creates neutron ports it first creates the port, then
updates the port setting binding information.
When using IPv6 networking ironic adds additional address
allocations to ensure network chain-booting will succeed.
When address allocation is deferred on port create ironic
cannot detect that IPv6 is used and does not add the
required additional addresses.
This change ensures the 'port' object is updated after the
port update setting the port binding required for neutron
to allocate the address. This allows ironic to correctly
detect IPv6 is used, and it will add the required IP
address allocations.
Story: 2009773
Task: 44254
Change-Id: I863dd4ab9615a9ce3b3dcb8798af674ac9966bf2
(cherry picked from commit 3404dc913e0a0a595c3696454b878b716833d612)
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently duplicate DHCP options are added when a port have
multiple address in the same address familiy. The duplicate
entries cause an internal server error in neutron.
This fixes the issue by only adding DHCP options for each
IP-version.
Story: 2009774
Task: 44255
Change-Id: I8bef819dc3101f88f4e04ea986e1039e34d917ed
(cherry picked from commit c4721da2d899e1c51e716577e776c6ee14e2e35e)
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
`TaskMonitor.task_monitor` is deprecated and was removed from sushy
at Ie48fab19199c0c2f3455d2212d50460a29685eed. Somehow missed to
update it for `redfish` firmware upgrade steps previously.
Change-Id: Iced8e921335995e1e084d6e632c6e81d3fc9249f
(cherry picked from commit 9076f185ca40e7629523b926ddf817da1ca6b4a8)
|
|\ \
| |/
|/|
| | |
stable/xena
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We validate the boot interface during adoption because of:
a) potential rebuilding,
b) non-local boot.
Rebuild proved a rarely used feature, and local boot is the default
nowadays, so it makes less sense to unconditionally validate the boot
interface during adoption. We will run the validation anyway the next
time we need to do something with booting.
Similarly, do not record is_whole_disk_image None if it cannot be
reliably determined.
Conflicts:
ironic/conductor/manager.py
Change-Id: I95252aea808c48ea2d94569449c871f0d483caaa
(cherry picked from commit d342b07dd6f8c5478f37a31b14e77bba6bef55e2)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Sushy 4.0.0 has breaking changes in it which prevent usage
with this version of ironic. While the global upper requirements
is unlikely ever to attempt to increment to 4.0.0, the explicit
requirements invocation, like what is in place for running
driver unit tests, was trying to pull in 4.0.0 resulting in test
failures.
Change-Id: Ief828f139bac9ba00f3250d8ddf4fd3d84a6fa7a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
(cherry picked from commit b1d08ae80542b6b3aa9fab99cdc64b449d113115)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently Ironic always adds a filename parameter to virtual media
image URL, for example:
http://localhost/redfish/boot.iso?filename=file.iso. This is useful
on certain BMCs which require a ".iso" suffix in the image URL
especially when using swift as the image source.
This should not be neccessary with file based virtual media images
and adding this parameter can cause issues in BMCs which do not
accept special characters such as "=" and "?" in virtual image URL.
This change alters Ironic's behaviour to only add the filename
parameter if swift backing store is used for the image.
Story: 2009278
Task: 43547
Change-Id: I3338bdb6a24d9695ce32d205221183b9b876bcc8
(cherry picked from commit e05f74c623d53aecc4a2e097595da8cdbd2607ef)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We currently use the last component, which is:
a) a potential information exposure,
b) can hit file name length limits [1]
Use the master path file name instead, which is always a UUID.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2014630
Change-Id: I2aa1230468132c2b7a8585d691ec180947f89c1e
(cherry picked from commit 7d85694fdf85a269cb3023083bf567a0e7e4ec13)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid resume clean before raid is actually configured.
After creating the RAID, set up polling will notify ironic to wait for the
RAID configuration to complete before proceeding to the next step instead of check IPA.
Story: #2009231
Task: #43336
Signed-off-by: Zhou Hao <zhouhao@fujitsu.com>
Change-Id: I7a551199224c24ca270b8b02d76b39386632c94f
(cherry picked from commit b617e43462ffff9a9220e89051455b7ae3b037ca)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed the bug of repeated resume cleaning due to the value of `fgi_status` not being updated correctly when obtaining the
RAID configuration status of the node managed by the `irmc` hardware type.
```
Unexpected error when processing next clean step. TypeError: 'NoneType' object is not subscriptable
```
This `NoneType` error occurs because ironic resumes clean without waiting for IPA to get the clean steps, and then it tries to read the
clean steps which should be a list but actually is none.
During auto clean, resume clean should be triggered by IPA, but in this case, it is triggered by a iRMC periodic task which checks
the progress of running raid config.
This error does not occur every time, sometime raid can be configured, auto clean can complete without error and the node can be deployed successfully.
Story: #2009206
Task: #43265
Signed-off-by: Zhou Hao <zhouhao@fujitsu.com>
Change-Id: I5a1c5708bdc1709e928f0faf7e18396e260dc551
(cherry picked from commit 8a5c672fa96521bd7d340c64b0c6ae2785643951)
|
|
|
|
|
|
|
|
|
| |
Pre-release changes perr our release documentation,
https://docs.openstack.org/ironic/latest/contributor/releasing.html.
Additionally, adds a prelude for our release notes.
Change-Id: Ib55eed3df4924860a970d0a1fbd43c182119de3e
|
|\ |
|
| |
| |
| |
| | |
Change-Id: I64da534508af30318b0c9dcfce989cfb4f98da0b
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
iDRAC jobs can finish in 'Completed', 'Failed' and also
'Completed with Errors' state. This fix adds handling of
'Completed with Errors' as finished failed job otherwise node
stays in wait state as it does not consider such jobs
as finished.
Change-Id: I5018bf8ef6c86c6d303258f1497fa83d33b3cb76
|
|\ \ \
| |_|/
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Adds capability to copy bootloader assets from the system OS
into the network boot folders on conductor startup.
Change-Id: Ica8f9472d0a2409cf78832166c57f2bb96677833
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Adds API for retrieving node history events
via a node. Includes pagination and limitation
of the response set.
Story: 2002980
Tas: 42961
Change-Id: I22a92fa6c30d721f6a5dd0670b2e0a9cf76ad7b1
|
|\ \ \
| |_|/
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds support to check if request to create
a subscription contains HttpHeaders so we can send in the
payload. [1]
[1] https://redfish.dmtf.org/schemas/v1/EventDestination.v1_0_0.json
Change-Id: I548ae06e22f217bf10ce6a7af57addfa7f9be555
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
After volumes are deleted in Redfish RAID also
clear foreign config if there is any.
Story: 2009160
Task: 43145
Depends-On: https://review.opendev.org/c/x/sushy-oem-idrac/+/806888
Change-Id: Ifde4656b4edd387ce2db2dbfc4c5ede261fafc70
|
|\ \ \ \
| |/ / /
| | | /
| |_|/
|/| | |
|