188 lines
3.8 KiB
ReStructuredText
188 lines
3.8 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
============================
|
|
Add new node name filter API
|
|
============================
|
|
|
|
https://bugs.launchpad.net/ironic/+bug/1526319
|
|
|
|
This blueprint proposes adding a way to filter nodes in the API by their
|
|
name (regex,wildcard).
|
|
|
|
GET /v1/nodes/?name_regex=<regexp_str>
|
|
GET /v1/nodes/?name_wildcard=<wildcard_str>
|
|
|
|
Problem description
|
|
===================
|
|
|
|
Current there is only api GET /v1/nodes/<node_name> to exactly retrieve the
|
|
ironic node via node_name. However for customer, if regular and wildcard
|
|
expressions filters are supported to retrieve the nodes via user input, that
|
|
should be useful for user to filter nodes by name flexible, especially for
|
|
the users who have a lot of baremetal nodes which are managed by ironic.
|
|
|
|
Possible use case is to support client bulk operations, such as to power off
|
|
some nodes which are filtered out by node name regexp or wildcard, with single
|
|
command.
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
Add new API:
|
|
|
|
+ GET /v1/nodes/?name_regex=<regexp_str>
|
|
+ GET /v1/nodes/?name_wildcard=<wildcard_str>
|
|
|
|
We support both BRE and ERE IEEE POSIX Regular expression standard[1].
|
|
|
|
And will add db api support, for different databases, there are different
|
|
operators for regular expression:
|
|
|
|
+ postgresql: '~'
|
|
+ mysql: 'REGEXP'
|
|
+ sqlite: 'REGEXP'
|
|
|
|
So we will check the current database which ironic is using, and get the
|
|
regular expression operator from the above map. If there is no such db in
|
|
the above supporting map, will raise api exception to user and tell user the
|
|
current database is not supported for this name regex query api.
|
|
|
|
For wildcard filter, all database can support, because will run with 'LIKE'
|
|
SQL operator which is standard SQL.
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
Use node tags for client bulk operations.
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
None.
|
|
|
|
|
|
State Machine Impact
|
|
--------------------
|
|
|
|
None.
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
Add new API 'GET /v1/nodes/?name_regexp=<regexp_str>', and 'GET /v1/nodes/
|
|
?name_wildcard=<wildcard_str>', and bump API micro-version.
|
|
Please see "Proposed change".
|
|
|
|
Client (CLI) impact
|
|
-------------------
|
|
|
|
Add new command that executes two new API:
|
|
|
|
+ ironic node-list --name-regex=<regexp_str>
|
|
+ ironic node-list --name-wildcard=<wildcard_str>
|
|
|
|
Have a similar modification to the OSC plugin.
|
|
|
|
RPC API impact
|
|
--------------
|
|
|
|
None.
|
|
|
|
Driver API impact
|
|
-----------------
|
|
|
|
None.
|
|
|
|
Nova driver impact
|
|
------------------
|
|
|
|
None.
|
|
|
|
Ramdisk impact
|
|
--------------
|
|
|
|
N/A
|
|
|
|
.. NOTE: This section was not present at the time this spec was approved.
|
|
|
|
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:
|
|
whaom
|
|
|
|
Work Items
|
|
----------
|
|
|
|
* Add new API 'GET /v1/nodes/?name_regex=<regexp_str>'
|
|
* Add new API 'GET /v1/nodes/?name_wildcard=<wildcard_str>'
|
|
* Add new 'name_regex filter' option for ironic node-list command.
|
|
* Add new 'name_widcard filter' option for ironic node-list command.
|
|
* Add new 'name_regex filter' option for the existing commands which take
|
|
node id as input to support bulk operation.
|
|
* Add new 'name_widcard filter' option for the existing commands which
|
|
take node id as input to support bulk operation.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
None.
|
|
|
|
Testing
|
|
=======
|
|
|
|
Will add unit test code to cover the new api.
|
|
|
|
Upgrades and Backwards Compatibility
|
|
====================================
|
|
|
|
None.
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
Update API document adding a new API
|
|
|
|
References
|
|
==========
|
|
|
|
[1] https://en.wikipedia.org/wiki/Regular_expression#Standards
|
|
|