Since we use the new conductor group to calculate which conductor an
update_node message should go to, we need to lowercase the new
conductor_group value at the API level, rather than just before saving
the node object.
Change-Id: I5530f8e1c2fdff9008e008cfa0c63edaa04e81d9
Story: 2004947
Task: 29362
This patch provides a mount point which is required by cinder to
attach the volume to the baremetal, when the volume targets are
created for any node.
Story: 2004864
Task: 29107
Change-Id: Id2a2e071026b86a6fd586a998bf865b1ddb960d7
The string used for the 'force_persistent_boot_device' field in the
node's driver_info is split by an additional blank and hence doesn't
set the option to be tested. In addition, the test condition tests a
mostly independent call (which also explains why the test succeeds
despite the incorrect option).
This patch removes the incorrect test and introduces new ones to
test the signature of prepare_ramdisk() which is the function in
which 'force_persistent_boot_device' is actually used.
Change-Id: I0b6a298837306fb8c6a46c13612b003dc62a7850
If ipxe_enabled=False, Ironic still tried to download images into
the TFTP location, which could fail. This patch fixes it.
Story: #2004905
Task: #29253
Change-Id: I5958eeb0d9de59a34145dd899354bf2a1a115dde
This change introduces the two RPC calls required for the allocation
API: create_allocation and destroy_allocation.
The nodes RPC is updated to:
* Prevent instance_uuid deletion if a node has an allocation and is
not in an updatable state.
* Delete allocation when instance_uuid is deleted and the node is
in an updatable state.
* Delete allocation when a node is unprovisioned and instance_uuid
is thus cleared.
Change-Id: I45815727f970c3d7fe51bb78d8e162a374d12e04
Story: #2004341
Task: #27987
To allow the use of Smart NICs on baremetal nodes it is required to mark
an ironic port as a Smart NIC, this change implement the changes required
for adding port attribute 'is_smartnic' in Port object and data model
alongside with migration scripts and unit tests.
Story: #2003346
Change-Id: Ic2ffbd6f1035907ea5a18bda6d2b21e617194195
The automated clean patch [1] introduced a common pattern for version
conversion, this patch removes the custom fault field conversion to
reuse the common handler.
[1] https://review.openstack.org/#/c/585991/12/ironic/objects/node.py
Change-Id: Id5997b32a442aeea8162fc0ef5894a87ac24443d
In the case of conductor service goes offline, some hardware types
may be not available as well, get_conductor_for is not protected for
such case when querying node with conductor.
This patch adds exception handling and bypasses orphaned nodes.
Change-Id: I381585240057a989ab269ea35ea9b2124527bf8e
Story: 2004834
Task: 29028
Some services (such as telemetry) actually consume the notifications.
If one deploys a service that listens on the same queue as telemetry,
there will be race-conditions with these services and one will not get
the notifications that are expected at points.
To address this, one sets a different topic and consumes from there.
This is not possible with versioned notifications at the moment. And, as
services move towards using them, the same need will arise.
This adds a configuration option to Ironic enabling the configuration
of topics for this notifier.
A similar change was introduced in nova:
https://review.openstack.org/#/c/444947/
Change-Id: Ib75feac0979d0094cb137abb13b0fe0ff4576eee
Story: 2004735
Task: 28788
This change makes ironic building UEFI-only bootable
ISO image (when being asked to build a UEFI-bootable image)
rather than building a hybrid BIOS/UEFI-bootable ISO.
The motivation behind this change is to make node boot more
predicable in the sense that if the user asks for UEFI boot,
the node would either boot over UEFI or fail.
On top of that, the ISO image slims down a tad bit and syslinux
boot loader presence on the conductor machine is not a
requirement any more.
Change-Id: If7828f72724cc7532f97cab758a29a9e8345850e
Story: 1526753
Task: 28368
Node power sync is performed from a periodic task. In that task
all nodes are iterated over and power sync call is performed.
While the power sync call itself if non-blocking relative to
other concurrent I/O tasks, iteration over the nodes seems
sequential meaning that nodes power sync is performed one node
at a time.
If the above observation holds, large-scale settings may never
be able to power sync all their nodes properly, throttling at
walking all active the nodes in 60 second period.
This patch distributes power sync calls over a bunch of green
threads each working on a portion of the nodes to be taken care
of.
Change-Id: I80297c877d9a87d3bd8fc30d0ed65cd443f200b3
Set the heartbeat_timeout value too high will cause OverflowError,
which affects places where the delta value is used to check the
online status of a conductor. This involves get_offline_conductors,
_filter_active_conductors, and descending caller like the
_check_orphan_nodes periodic task, /v1/drivers endpoint, etc.
Limit the max value to 10 years as [1] does.
[1] https://review.openstack.org/#/c/631538
Story: 2004807
Task: 29021
Change-Id: I2b47fa6747e2f97c6910be708c328bed9daba455
Look for boolean and string like booleans in driver_info['ipmi_force_boot_device']
to make setting the option more user friendly / less error prone.
Change-Id: I2917761055db5286183ce265089c19dea98947ad
Story: 2004444
Reviewer consensus on change 628097 was that one of the
messages should be a warning. As such, changing.
Change-Id: I2425d46c84f72de36789e671785c587ede68e5e8
According to [1] the dsvm should be removed from zuulv3 jobs
[1] https://docs.openstack.org/infra/manual/drivers.html#naming-with-zuul-v3
Duplicate jobs to avoid break the gate in other projects like:
- ironic-tempest-plugin, ironic-inspector, nova, neutron, devstack
Change-Id: I96a96a9d6f23f02f9f49c962f183e8c5ca78e048
Allocations are not initially tied to nodes, so to process them we need
to pick a random alive conductor. This change enables that.
Change-Id: I6c950bc4f49aa03026bc7925f8c699d10cedc310
Story: #2004341
Currently when updating a node we try to acquire the lock on it using
its old database record, including its old driver. This is not correct
when updating a driver, since the current conductor may not have access
to the old driver (and the old driver may no longer be enabled at all).
Since we do not need task.driver at all when updating nodes, this change
stops populating it in update_node.
Change-Id: I510c3bfbd11b01fef05341be2bb04c6bd01bf8ac
Story: #2004741
Task: #28812
Change non-existent ``eth_summary`` property to ``summary`` on
ethernet_interfaces resource of Sushy.
Also amended the helper method, ``create_ports_if_not_exist`` in
inspect_utils module to handle Sushy returned ethernet summary
results.
Change-Id: I59a3d269c3508cc1e86d0ad5af3707585b108fa0
Story: 2004638
Task: 28574
This is a follow-up to commit 36b047ff5e1b0c1cf64d4b58bf8a9ce3bcc87e85:
* Do the join on the database level when filtering allocations by node UUID
* Add a check that we do not touch instance_info in destroy_allocation to
document it as an explicit decision.
* Fix a few grammar nits and inprecise comments.
Change-Id: I1fa7815ae3b6a0190bdb3bf0257ae79fb6a36671
Story: #2004341