| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* add fields to Node object
* expose them at endpoint `/v1/nodes/{node_ident}/states`
* update states on powersync / entering managed state.
* tests
* update api endpoint info in api-ref
Story: 2008567
Task: 41709
Change-Id: Iddd1421a6fa37d69da56658a2fefa5bc8cfd15e4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A node object has many fields, and a huge opportunity
for performance improvement is to reduce the amount of work
performed at the lower layers when it is not necessary.
In particular, the easiest case to identify and handle is
when a list of fields to be fulfilled is explicitly supplied.
This is particularlly noteworthy when we collecting a list of
nodes for synconization with Nova, where only 9 columns are
really needed to supply Nova with the information required,
and thus numerous fields are discarded.
This is all particularlly compounded when traits are used,
which presently uses a joined load pattern from SQL.
With this patch, we explicitly load and convert only the fields
requested at the lowest level, and then perform a different style
of loading node traits which requires less overhead by SQLAlchemy
to de-duplicate the returned result set to the application.
This turns out to be far more efficent as we're reducing the amount
of data/object conversion work by 360%, even before we consider
populating traits, which is performed as a separate query when
traits are requested.
Story: 2008885
Task: 42434
Change-Id: Iac703d2a9b7b240a47477be8a64c7c33e28f692f
|
|
|
|
|
|
|
|
|
|
| |
Provide the fields in the BIOS setting API -
``/v1/nodes/{node}/bios/{setting}``, and in the BIOS setting list API
when details are requested - ``/v1/nodes/<node>/bios?detail=True``.
Story: #2008571
Task: #42483
Change-Id: Ie86ec57e428e2bb2efd099a839105e51a94824ab
|
|
|
|
|
|
|
|
|
|
|
|
| |
The iSCSI deploy was very easy to start with, but it has since become
apparently that it suffers from scalability and maintenance issues.
It was deprecated in the Victoria cycle and can now be removed.
Hide the guide to upgrade to hardware types since it's very outdated.
I had to remove the iBMC diagram since my SVG-fu is not enough to fix it.
Change-Id: I2cd6bf7b27fe0be2c08104b0cc37654b506b2e62
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds MVP support for idrac-redfish to RAID interface. Based on
generic redfish implementation, but requires OEM extension
to check when `Immediate` time becomes available shortly
after IPA starts executing steps.
Does not support foreign disks, convert from non-RAID mode.
Story: 2008602
Task: 41778
Depends-On: https://review.opendev.org/c/x/sushy-oem-idrac/+/776224
Change-Id: Iefb7f882c97e33a176962e4e907163d9e4809445
|
|
|
|
|
|
|
|
|
|
| |
Prevent each driver comming online one at a time. So that
/driver returns nothign until all interfaces are registered
Story: #2008423
Task: #41368
Change-Id: I6ef3e6e36b96106faf4581509d9219e5c535a6d8
|
|
|
|
|
|
|
|
|
|
| |
MAC address is not user friendly for port management, having
a name field is also a feature parity with other resources.
This patch implements db related change.
Change-Id: Ibad9a1b6bbfddc0af1950def4e27db3757904cb1
Story: 2003091
Task: 23180
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We hit an issue in Kayobe CI where we have the following config:
enabled_deploy_interfaces: iscsi,direct
default_deploy_interface: iscsi
In practice, direct does not work out of the box in Kayobe currently.
The online migration added recently to move nodes from iscsi to direct
caused issues in our upgrade jobs, since it migrated nodes to direct,
without the config in place to make this work.
This change avoids migrating nodes when iscsi is the default deploy
interface.
Story: 2008114
Task: 40996
Change-Id: I5cf0684dc53a2d89fac12e578b28e73e7697a97e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change marks the iscsi deploy interface as deprecated and
stops enabling it by default.
An online data migration is provided for iscsi->direct, provided that:
1) the direct deploy is enabled,
2) image_download_source!=swift.
The CI coverage for iscsi deploy is left only on standalone jobs.
Story: #2008114
Task: #40830
Change-Id: I4a66401b24c49c705861e0745867b7fc706a7509
|
|
|
|
|
|
|
| |
Update the port node's filter to allow both owner and lessee to
see a node's ports. This filter is only used when listing ports.
Change-Id: I568e8d23375239d9c044df95b4bc24d5174c145b
|
|
|
|
|
|
|
|
|
|
| |
We allow deleting allocated nodes if maintenance is True, but it
fails with HTTP 500 because of a foreign constraint on the nodes
table.
Story: #2007823
Task: #40102
Change-Id: I7a689c8c403b613fca412fa70e31df40cce8ad95
|
|
|
|
|
|
|
|
|
|
|
| |
The assertItemsEqual method has been removed in Python 3.3 [1] but
it was kept alive by unittest2, imported by testtools.
To prevent mayhem and despair caused by testtools removing unittest2
from its requirements in the near future, we switch to assertCountEqual.
[1] https://bugs.python.org/issue17866
Change-Id: I614bcedc9981370fb54cfe3da997a3d52484c07f
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A new dictionary field `network_data` is added to the node object.
This new field can be populated by the operator with node static
network configuration.
Ironic API now performs formal JSON document validation of node
`network_data` field content against user-supplied JSON schema at
driver validation step.
As of this commit, the new `network_data` field is not actually
used by ironic, otherwise it should be perfectly functional. In
the following commits, network static configuration will be taken
from this field and handed over to ironic ramdisk bootstrapping
utilities.
Change-Id: I868b3b56a17f59e5aa1494b2e0ebc9c4e34ef173
Story: 2006691
Task: 36991
|
|/
|
|
|
|
|
|
| |
This should help slowly enabling H210 test everywhere.
Also fixing H210 enforced autospec in some places.
Change-Id: Ibbc00b528265f8b86bc2fe45e078d56d36381c5d
|
|
|
|
|
|
|
| |
Python3 have a standard library for mock in the unittest module,
let's drop the mock requirement and switch tests to unittest mock.
Change-Id: I4f1b3e25c8adbc24cdda51c73da3b66967f7ef23
|
|
|
|
|
|
|
| |
This commit updates the mailmap file and changes my alias
in a few places within old comments.
Change-Id: Ica0e184109d794b8e129d567b5606d7fe84ff384
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds a `lessee` field to nodes, and exposes it
to policy. It also updates the non-admin node list API
to match for both owner and lessee; and updates the
allocation conductor to match owner allocations with nodes
with the appropriate lessee.
Change-Id: Ib31b49c7143ec8fd6cb486fc24038215b197c418
Story: 2006506
Task: 37930
|
|
|
|
|
|
|
|
|
|
| |
Fixes W504 and E117, resulting in some indentation changes.
Also fixes code that exceeds the complexity requirement, that is bumped
to 20 (mostly to avoid refactoring the agent heartbeat call, resulting
in conflicts for the deploy steps work).
Change-Id: I8e49f2c039b0ddfca9138f8e148708b7e8b5df7e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a conductor hostname is changed while reservations are
issued to a conductor with one hostname, such as 'hostName'
and then the process is restarted with 'hostname', then the
queries would not match the node and effectively the nodes
would become inaccessible until the reservation is cleared.
This patch changes the queries to use a case insenitive
like search, better known as ilike.
Special thanks to the nova team for finding a bug in the hash
ring calculation in the ironic virt driver where a customer
changed their nova-compute hostname, which inspired this
patch.
Change-Id: Ib7da925ba5ca6a82ba542e0f4ae4cf7f0d070835
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Expose a port's node's owner to policy, giving Ironic admins
the option of modifying the policy file to allow users
specified by a node's owner field to perform API actions on
that node's associated ports.
Change-Id: I47ecbad9729f18dacc703e2a625ef3e92bfb00ed
Story: #2006506
Task: #37539
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds support for node retirement: nodes can
have additional properties 'retired' and 'retired_reason'
which change the way the nodes (can) traverse the FSM
and which operations are allowed. In particular:
- retired nodes cannot move from manageable to available;
- upon instance deletion, retired nodes move to manageable
(rather than available).
Story: #2005425
Task: #38142
Change-Id: I8113a44c28f62bf83f8e213aeb6704f96055d52b
|
|
|
|
|
|
|
|
|
|
| |
Since we've dropped support for Python 2.7, it's time to look at
the bright future that Python 3.x will bring and stop forcing
compatibility with older versions.
This patch removes the six library from requirements, not
looking back.
Change-Id: Ib546f16965475c32b2f8caabd560e2c7d382ac5a
|
|
|
|
|
|
|
|
|
|
| |
Add an owner to allocations. Depending on policy, a non-admin
can then create an allocation and have the owner set to their
project. Allocation processing then respects the owner.
Change-Id: I2965a4a601b9fa2c0212097da37b104a3e5514df
Story: #2006506
Task: #37540
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PXE is inherently unreliable and sometimes times out without an
obvious reason. It happens particularly often in resource constrained
environments, such as the CI. This change allows an operator to
set a timeout, after which the boot is retried again.
The _add_node_filters call had to be refactored to avoid hitting
the complexity limit.
Change-Id: I34a11f52e8e98e5b64f2d21f7190468a9e4b030d
Story: #2005167
Task: #29901
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cisco's Third-Party CI was taken down as a result of the
CTO's office being restructured. Numerous attempts to
re-engage with Cisco directly and address the various
known issues in their drivers have not proven to be
fruitful.
Additionally, the drivers are not Python3 compatible,
and some reports have indicated that the CIMC driver is
no longer compatible with newer versions.
As such, the ironic community has little choice but to
to remove the Cisco UCS/CIMC hardware types and driver
interface code.
Story: 2005033
Task: 29522
Change-Id: Ie12eaf7572ce4d66f6a68025b7fe2d294185ce28
|
|
|
|
|
|
|
| |
Thorough replacement of git.openstack.org URLs with their opendev.org
counterparts.
Change-Id: Ic19e45986e9f650c1deb297f463e679fd268ad97
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch proposes to adding iBMC driver for deploying the
Huawei 2288H V5, CH121 V5 series servers.
The driver aims to add management and power interfaces using
Huawei iBMC RESTful APIs for those series servers.
Change-Id: Ic5e920e4e58811c6a6dfe927732595950aea64e7
Story: 2004635
Task: 28566
|
|/
|
|
|
|
|
|
|
|
|
| |
Currently we fetch all nodes one by one when validating the provided
candidate_nodes. This is not overly efficient, so this change introduces
a new database API to specifically validate a list of names/uuids and
convert it to uuids. As a nice side effect, no database query is done
for identities that cannot be a valid node name or uuid.
Change-Id: I7adfe897200b1b05d9e632c68d0d3d046c06a921
Story: #2004341
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a step in a deploy template is updated, changing only the step's
'args' field, then we see the following error on Python 3:
TypeError: unorderable types: dict() < dict()
In Python 3, dicts are no longer orderable, so cannot be used as part of
the key to a sort function. This change uses a JSON dump of the step
with sorted keys for comparison, as suggested in [1].
[1] https://stackoverflow.com/a/22003440
Change-Id: I70b806d5850f0678f3dd6633228947f6cd39d691
Story: 1722275
Task: 29750
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The original patch [1] to add DB & object support for deploy templates
did not include an 'extra' field for metadata. This patch adds the
field, and bumps the object version.
Change-Id: I95b4beae217704defc9eab851780fd9c42847c40
Story: 1722275
Task: 29698
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Fix nits raised in https://review.openstack.org/#/c/627663.
Change-Id: I87492119ff0b7df8bf899a175f9fa57638e6c314
Story: 1722275
Task: 28674
|
|/
|
|
|
|
|
|
|
| |
This change allows conductors to periodically check and take over
allocations that were processed by conductors that went offline.
Change-Id: Ia7b9b5bc485a66215def4a76c6682c47342b86d9
Story: #2004341
Task: #28474
|
|
|
|
|
|
|
|
|
| |
This change allows allocations that were not finished because of
conductor restarting or crashing to be finished after start up.
Change-Id: I016e08dcb59613b59ae753ef7d3bc9ac4a4a950a
Story: #2004341
Task: #29544
|
|
|
|
|
|
|
|
|
|
| |
Adds deploy_templates and deploy_template_steps tables to the database,
provides a DB API for these tables, and a DeployTemplate versioned
object.
Change-Id: I5b8b59bbea1594b1220438050b80f1c603dbc346
Story: 1722275
Task: 28674
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements the feature of storing informational free-form text
into ironic node, via the "description" field.
Operators can do simple queries on the context of description.
Change-Id: I787fb0df34566aff30dea4c4a3ba0e1ec820d044
Story: 2003089
Task: 23178
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|/
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds the database models and API, as well as RPC objects
for the allocation API. Also the node database API is extended with
query by power state and list of UUIDs.
There is one discrepancy from the initially approved spec: since we
do not have to separately update traits in an allocation, the planned
allocation_traits table was replaced by a simple field.
Change-Id: I6af132e2bfa6e4f7b93bd20f22a668790a22a30e
Story: #2004341
Task: #28367
|
|
|
|
|
|
|
|
|
| |
The version check is run before tables are created, so it cannot
succeed for them.
Change-Id: Ibcf0728bc5d1b0cbdd78796526f9c93fc99e8c08
Story: #2004589
Task: #28467
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds "owner" field on the node object and exposes it for updates
via the API.
Additionally, fixed a couple minor items related to the prior
where we missed updating version numbers in rebases.
Change-Id: Iaaf3db97d21de9b11236cf2d18ffcc3f73f6e50c
Story: #2001814
Task: #12550
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements API part to the feature of exposing conductors
information.
A new API object Conductor is added to provide endpoints below:
* GET /v1/conductors for listing conductor resources
* GET /v1/conductors/{hostname} for showing a conductor
V1 endpoint discovery and default policy are updated.
A conductor field is added to Node API object, which returns in
/v1/nodes* related endpoints.
Considering patch size and microversion conflicting with other api
patches, api-ref would go in another patch if no strong opinions.
Story: 1724474
Task: 28064
Change-Id: Iec6aaabc46442a60e2d27e02c21e67234b84d77b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch lays some ground work around db and rpc to provide
conductors information from the API.
Changes in the db api and Conductor object is used to support
the implementation of /v1/conductors. Adds an argument
"online" to Conductor.get_by_hostname, so that we can get
the conductor object from database even it's not online,
this is required for the implementation of /v1/conductors/{hostname}.
Adds a new interface get_conductor_for() to get the hostname
of the conductor which is servicing the given node, it will
be used for the implementation of /v1/nodes* endpoints, as well
as listing nodes by given conductor.
Story: 1724474
Task: 28064
Change-Id: I39a7a47c5ae649f6c3200e772a9357023f21a7c4
|