summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/db
Commit message (Collapse)AuthorAgeFilesLines
* Add `boot_mode` and `secure_boot` to node object and expose in apiCenne2021-07-082-0/+14
| | | | | | | | | | | | | * 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
* Only return the requested fields from the DBJulia Kreger2021-06-251-0/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Include bios registry fields in bios APIBob Fournier2021-05-273-10/+58
| | | | | | | | | | 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
* Bye-bye iSCSI deploy, you served us wellDmitry Tantsur2021-05-042-77/+7
| | | | | | | | | | | | 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
* Add Redfish RAID interface to idrac HW typeAija Jauntēva2021-03-191-0/+4
| | | | | | | | | | | | | | 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
* Register all hardware_interfaces togetherDerek Higgins2021-01-081-15/+29
| | | | | | | | | | 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
* Support port nameKaifeng Wang2020-11-293-1/+12
| | | | | | | | | | 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
* Don't migrate away from iscsi if it is the defaultMark Goddard2020-09-301-0/+8
| | | | | | | | | | | | | | | | | | | | 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
* Deprecate the iscsi deploy interfaceDmitry Tantsur2020-09-221-0/+62
| | | | | | | | | | | | | | | 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
* Allow node lessee to see node's portsTzu-Mainn Chen2020-07-231-1/+57
| | | | | | | 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
* Fix internal server error on deleting nodes with allocationsDmitry Tantsur2020-06-171-0/+2
| | | | | | | | | | 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
* Use assertCountEqual instead of assertItemsEqualRiccardo Pittau2020-06-114-20/+20
| | | | | | | | | | | 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
* Merge "Add `network_data` field to ironic node object"Zuul2020-05-192-0/+8
|\
| * Add `network_data` field to ironic node objectIlya Etingof2020-05-052-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Temporary add per-file-ignores to flake8 testsRiccardo Pittau2020-05-061-10/+10
|/ | | | | | | | This should help slowly enabling H210 test everywhere. Also fixing H210 enforced autospec in some places. Change-Id: Ibbc00b528265f8b86bc2fe45e078d56d36381c5d
* Switch to unittest mockIury Gregory Melo Ferreira2020-04-304-4/+4
| | | | | | | 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
* Add my new address to .mailmapAeva Black2020-04-131-3/+4
| | | | | | | This commit updates the mailmap file and changes my alias in a few places within old comments. Change-Id: Ica0e184109d794b8e129d567b5606d7fe84ff384
* Add node lessee fieldTzu-Mainn Chen2020-04-073-1/+35
| | | | | | | | | | | | 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
* Fix the remaining hacking issuesDmitry Tantsur2020-03-312-6/+6
| | | | | | | | | | 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
* Make reservation checks caselessJulia Kreger2020-03-061-0/+8
| | | | | | | | | | | | | | | | | | 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
* Merge "Allow node owners to administer associated ports"Zuul2020-02-071-1/+48
|\
| * Allow node owners to administer associated portsTzu-Mainn Chen2020-01-021-1/+48
| | | | | | | | | | | | | | | | | | | | | | 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
* | Support node retirementArne Wiebalck2020-01-282-0/+24
|/ | | | | | | | | | | | | | | 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
* Stop using six libraryRiccardo Pittau2019-12-237-30/+23
| | | | | | | | | | 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 owner to allocations and create relevant policiesTzu-Mainn Chen2019-12-102-0/+6
| | | | | | | | | | 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
* Allow retrying PXE boot if it takes too longDmitry Tantsur2019-09-201-1/+6
| | | | | | | | | | | | | | 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
* Remove CIMC/UCS driversJulia Kreger2019-06-251-17/+0
| | | | | | | | | | | | | | | | | | | | 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
* Replace git.openstack.org URLs with opendev.org URLsZhongShengping2019-04-241-1/+1
| | | | | | | Thorough replacement of git.openstack.org URLs with their opendev.org counterparts. Change-Id: Ic19e45986e9f650c1deb297f463e679fd268ad97
* Merge "Add Huawei iBMC driver support"Zuul2019-03-151-0/+9
|\
| * Add Huawei iBMC driver supportQianbiao NG2019-03-141-0/+9
| | | | | | | | | | | | | | | | | | | | | | 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
* | Allocation API: optimize check on candidate nodesDmitry Tantsur2019-03-041-0/+35
|/ | | | | | | | | | | 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
* Deploy templates: fix updating steps in Python 3Mark Goddard2019-02-281-0/+9
| | | | | | | | | | | | | | | | | 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
* Merge "Deploy Templates: add 'extra' field to DB & object"Zuul2019-02-273-0/+17
|\
| * Deploy Templates: add 'extra' field to DB & objectMark Goddard2019-02-263-0/+17
| | | | | | | | | | | | | | | | | | | | 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
* | Merge "Deploy Templates: Fix DB & object nits"Zuul2019-02-272-4/+6
|\ \ | |/ |/|
| * Deploy Templates: Fix DB & object nitsMark Goddard2019-02-212-4/+6
| | | | | | | | | | | | | | | | Fix nits raised in https://review.openstack.org/#/c/627663. Change-Id: I87492119ff0b7df8bf899a175f9fa57638e6c314 Story: 1722275 Task: 28674
* | Allocation API: taking over allocations of offline conductorsDmitry Tantsur2019-02-192-0/+26
|/ | | | | | | | | 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
* Allocation API: resume allocations on conductor restartDmitry Tantsur2019-02-191-2/+17
| | | | | | | | | 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
* Deploy templates: data model, DB API & objectsMark Goddard2019-02-133-0/+339
| | | | | | | | | | 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
* Add description field to nodeKaifeng Wang2019-02-013-0/+34
| | | | | | | | | | | 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
* Allocation API: conductor API (without HA and take over)Dmitry Tantsur2019-01-311-0/+7
| | | | | | | | | | | | | | | | | 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
* Add is_smartnic to Port data modelHamdy Khader2019-01-292-0/+10
| | | | | | | | | | 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
* Merge "Allocation API: allow picking random conductor for RPC topic"Zuul2019-01-231-0/+17
|\
| * Allocation API: allow picking random conductor for RPC topicDmitry Tantsur2019-01-091-0/+17
| | | | | | | | | | | | | | | | 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
* | Allocation API: minor fixes to DB and RPCDmitry Tantsur2019-01-081-1/+5
|/ | | | | | | | | | | 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
* Allocation API: database and RPCDmitry Tantsur2019-01-074-1/+334
| | | | | | | | | | | | | | 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
* Ignore newly introduced tables in pre-upgrade versions checkDmitry Tantsur2018-12-131-0/+6
| | | | | | | | | The version check is run before tables are created, so it cannot succeed for them. Change-Id: Ibcf0728bc5d1b0cbdd78796526f9c93fc99e8c08 Story: #2004589 Task: #28467
* Add "owner" information fieldJulia Kreger2018-12-102-0/+6
| | | | | | | | | | | | 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
* Expose conductors: apiKaifeng Wang2018-12-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | 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
* Expose conductors: db and rpcKaifeng Wang2018-11-291-0/+12
| | | | | | | | | | | | | | | | | | | | | 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