You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Jason Gerlowski (Jira)" <ji...@apache.org> on 2022/10/24 14:16:00 UTC

[jira] [Commented] (SOLR-16391) Cosmetic, REST-fulness improvements to v2 collection+core CRUD and status APIs

    [ https://issues.apache.org/jira/browse/SOLR-16391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17623208#comment-17623208 ] 

Jason Gerlowski commented on SOLR-16391:
----------------------------------------

To be a little more explicit about the APIs we want this ticket to cover, I found 10 APIs related to core/collection CRUD and status:

* Create Collection 
** Current Form: POST /api/collections \{"create": \{...\}\}
** Desired Form: POST /api/collections \{...\}
** Spreadsheet Ref: Tab 1, Line 20 
* Fetch Collection (detailed info)
** Current Form: N/A 
** Desired Form: GET /api/collections/collName?details=specificFlags (see CollectionsHandler COLSTATUS flags) 
** Spreadsheet Ref: Tab 1, Line 22 
* Update Collection 
** Current Form: POST /api/collections/collName \{"modify": \{...\}\}
** Desired Form: PUT /api/collections/collName \{"propName": "newValue"\}
** Spreadsheet Ref: Tab 1, Line 23
* Set Collection Property
** Current Form: POST /api/collections/collName \{'set-collection-property": \{"name": "a", "value": "b"\}\}
** Desired Form: PUT /api/collections/collName/properties/propName \{"value": "someVal"\}
** Spreadsheet Ref: Tab 1, Line 66
* Delete Collection Property
** Current Form: POST /api/collections/collName \{'set-collection-property": \{"name": "a"\}\}
** Desired Form: DELETE /api/collection/collName/properties/propName
** Spreadsheet Ref: Tab 1, Line 68
* Create Core
** Current Form: POST /api/cores \{"create": \{...\}\}
** Desired Form: POST /api/cores \{...\}
** Spreadsheet Ref: Tab 1, Line 70
* Collection Ping/Health
** Current Form: GET /api/collections/collName/admin/ping
** Desired Form: GET /api/collections/collName/health
** Spreadsheet Ref: Tab 5, Line 15
* Collection Ping/Health Enabled
** Current Form: GET /api/collections/collName/admin/ping?action=status
** Desired Form: GET /api/collections/collName/health/status
** Spreadsheet Ref: Tab 5, Line 16
* Enable Collection Ping/Health
** Current Form: GET /api/collections/collName/admin/ping?action=enable
** Desired Form: PUT /api/collections/collName/health/status \{"enabled": true\}
** Spreadsheet Ref: Tab 5, Line 17
* Disable Collection Ping/Health
** Current Form: GET /api/collections/collName/admin/ping?action=disable
** Desired Form: PUT /api/collections/collName/health/status \{"enabled": false\}
** Spreadsheet Ref: Tab 5, Line 18

Obviously this is a big list.  IMO it makes sense to split these up across different PRs, doing some small number (i.e. 1 or 2) of APIs per-PR.  If anyone wants to help chip away at this, just call out which APIs from this list you intend to work on and we can parallelize them.

In terms of the steps required, the JIRA comments [here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617806&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617806] and [here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617923&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617923] give some good background and step-by-step instructions for switching APIs over to the new JAX-RS framework, which is usually helpful or even required as the traditional v2 framework doesn't lend itself very readily to RESTful APIs.  (Those comments describe creating a new API "from scratch", but the steps are still applicable to modifying an existing API.)  The PR [here|https://github.com/apache/solr/pull/1053] also serves as a helpful example to work from.

Not all API modifications require the new JAX-RS framework, though it is preferred going forward.  Instructions for updating APIs using the older, traditional v2 framework can be found [here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17565076&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17565076], and an example PR can be found [here|https://github.com/apache/solr/pull/1061].

> Cosmetic, REST-fulness improvements to v2 collection+core CRUD and status APIs
> ------------------------------------------------------------------------------
>
>                 Key: SOLR-16391
>                 URL: https://issues.apache.org/jira/browse/SOLR-16391
>             Project: Solr
>          Issue Type: Sub-task
>          Components: v2 API
>    Affects Versions: main (10.0)
>            Reporter: Jason Gerlowski
>            Priority: Major
>
> As mentioned on SOLR-15781, the v2 API currently has an experimental designation, and the community has expressed an interest in using this period to update our v2 endpoints to be more REST-ful and consistent.  The current plan is to follow the specific changes laid out in [this spreadsheet|https://docs.google.com/spreadsheets/d/1HAoBBFPpSiT8mJmgNZKkZAPwfCfPvlc08m5jz3fQBpA/edit?usp=sharing], though of course nothing there is set in stone and there are still warts to be worked out.
>  
> This ticket plans to tackle making the changes required for Solr's collection and collection-prop CRUD APIs, as well as its collection-status APIs



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org