Status
Current state: "Discarded"
Discussion thread: here
JIRA: KAFKA-4279
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
KAFKA-4279 states "We have a REST resource that allows users to see the available plugins, but we have no equivalent that allows listing available converters".
I propose that we implement a generic "filter" API which will list connector plugins matched by type (one of SOURCE,SINK,CONVERTER,HEADER_CONVERTER).
Public Interfaces
We will add a new REST endpoint for Connect:
GET /connector-plugins/filter?pluginType=CONVERTER
Proposed Changes
The proposed REST endpoint will accept a query parameter pluginType
based on which connector plugins are filtered.
Sample response if pluginType
is set to header_converter
[ { "class": "org.apache.kafka.connect.json.JsonConverter", "type": "converter" }, { "class": "org.apache.kafka.connect.storage.SimpleHeaderConverter", "type": "header_converter" }, { "class": "org.apache.kafka.connect.storage.StringConverter", "type": "converter" } ]
Sample response if pluginType
is set to invalid type
{ "error_code": 400, "message": "pluginType must be set to one of: SOURCE,SINK,CONVERTER,HEADER_CONVERTER" }
Compatibility, Deprecation, and Migration Plan
Since this is a new REST API, there should not be any concerns on compatibility, deprecation and migration.
Rejected Alternatives
Today listConnectorPlugins API supports an optional flag, connectorsOnly, which is set to "true" by default. We could have a similar flag "convertersOnly", but this would cause confusion.
Eg: User would assume that GET /connector-plugins?convertersOnly=true
should list only converter plugins, but it will include source and sink plugins as well.
If we change the default value of connectorsOnly, user will have to explicitly specify the value while listing connector plugins - which is a deviation from current usage.