Specification Audit
...
‘Groups’ refers to collection of configurations of a plugin. An example structure of a configuration JSON would look like this - Sample JSON
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "metadata": {...}, "inputs": null, "configuration-groups": [ {group1}, {group2}, ... ], "output": [ {configuration-output-1}, {configuration-output-2}, ... ] } |
...
In the above mentioned sample JSON, fields 1 & 2 are configurations of CustomPlugin defined in the backend. We could now configure them in the JSON so that it gets easier to use view/edit them in hydrator.
Configurations for a field
Configurations of a field are the set of properties that we define in the JSON, that governs what/how that particular plugin field gets rendered in hydrator.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "configuration-groups": [ { "label": "My Group Title", "properties": [ { "name": "Field1", "widget-type": "numberbox", "widget-attributes": { "default": "1" }, "plugin-function": { "method": "POST", "endpoint": "getSchema", "output-property": "schema" } }, { "name": "Field2", "widget-type": "json-editor" } ] } ], "output": [ {output-property1} {output-property2} ... ] } |
Widgets
A widget in UI represents a component that we could use to set the value of a property of a plugin. It could be anything representable in HTML. For instance if our CustomPlugin has a property that requires a JSON value, we could use a json-editor to set value to it. A widget, in general, is a component that we can use to represent a property of a plugin to attach a value to it. The following are the list of widgets that we right now have in CDAP that could be readily be used.
Widget-type | Description | Attributes | Output data type | Sample JSON | |||||||
textbox | Default html textbox to enter any string | default | string |
| |||||||
number | Default html number textbox. Can enter only valid numbers. | default, min, max. (default should be between min and max) | int |
| |||||||
passwordbox | Default html password box. | NA | string |
| |||||||
datetime | Date time picker. Used to set date (in string) for any property | default, format (format could be ISO, long, short or full format dates.Reference | string |
| |||||||
csv | Comma separated values. Each value is entered in a separate box | delimiter (allows to change the delimiter to be any other symbol apart from ‘,’) | comma-separated string |
| |||||||
json-editor | Json editor to pretty-print and auto format JSON while typing | default | string |
| |||||||
javascript-editor, python-editor | An editor to write Javscript or Python as a value for a property. | default | string |
| |||||||
keyvalue | A key-value editor which allows you to construct map. | string |
| ||||||||
select | A html dropdown with a list of values. Allows to choose one from the list. | values, default | string |
| |||||||
ds-multiplevalues | A delimiter separated values widget that allows to specify a list of values separated by a delimiter. | numValues, values-delimiter, delimiter, placeholders | string |
|
Versioning
The versioning of plugin config json is closely tied to plugin deployment and maintenance. Every time a hydrator plugin developer deploys a plugin(artifact) he(she) will couple the plugin JARs with config JSON and documentation. The CLI or UI that is deploying the artifact (plugin) will add the config JSON and documentation with it. The config JSON and documentation will be added as properties of an artifact. Each plugin under an artifact will be added as a property to the artifact and each property (plugin) will have JSON as its value with doc and widgets as keys. an example structure would look something like this,
...