Ownership Information Storage¶
https://storyboard.openstack.org/#!/story/2001814
In many large businesses with hardware fleets, there may be a variety of ownership of the underlying hardware for tracking purposes. A good example of this is in a hybrid service provider scenario where an operator may directly own a portion of the hardware, may have the hardware on lease, and may ultimately have customer owned hardware.
We simply cannot model this with existing node fields, since there may be resource sharing agreements also in place between the owners of the hardware. And as such, we need some way to store and represent the end owner of the hardware for tracking and logistical purposes.
Problem description¶
While scenarios differ, ultimately there is a need to be able to store information in a top level fashion about who owns a given piece of hardware.
Information of this sort can be vital when it comes time for tax asset inventories, or just simple tracking of where the hardware came from.
Providing the ability to search and return the hardware that is known to be owned by a particular group allows for faster correlation of the disposition of the hardware for auditing and accounting purposes.
Proposed change¶
Proposing to add a new informational field to the node object that can be queried via the REST API, and stored in the database. No other initial use of this field is expected.
Future use could also be automatic in the scenario if there is a driver that is aggregating a number of management systems, however that is out of scope.
Alternatives¶
An operator could potentially store this information in extra, however then they would still need to dump all of the nodes out to obtain a list of nodes with the specific information that is needed. The operator would begin to hit limits with the number of responses from the API, and would need to likely create their own tooling around list processing.
Data model impact¶
A owner
field would be added to the nodes table as a VARCHAR(255)
and will have a default value of null
in the database.
State Machine Impact¶
None
REST API impact¶
An owner
field will be returned as part of the node. The API shall be
updated to allow a user to set and unset the value via the API.
Additionally the GET syntax for the nodes list will be updated to allow a list of matching nodes to be returned.
POST/PATCH operations to the field will be guarded by a new microversion. The field shall not be returned unless the sufficient microversion is supplied for GET operations.
Client (CLI) impact¶
“ironic” CLI¶
None
“openstack baremetal” CLI¶
A corresponding change will be necessary to enable the ability for a user to set/unset the value from a command line.
RPC API impact¶
None
Driver API impact¶
None
Nova driver impact¶
None
Ramdisk impact¶
None
Security impact¶
None
Other end user impact¶
None
Scalability impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
TheJulia - juliaashleykreger@gmail.com
- Other contributors:
None
Work Items¶
Add database field.
Add object field.
Add REST API functionality and microversion.
Update REST API documentation.
Update python-ironicclient.
Dependencies¶
None
Testing¶
Basic API CRUD testing will be added. There is no need for additional testing as this is an informational field for the API user/baremetal operator.
Upgrades and Backwards Compatibility¶
Field will be created as part of the upgrade process with a default value in the database schema.
Documentation Impact¶
REST API documentation will need to be updated.
References¶
None