Tech Adapters
Tech Adapters (formerly known as Specific Provisioners or Infrastructure Templates), are microservices responsible for the validation and provisioning of components.
When the platform team wants to support a new technology, a new Tech Adapter microservice compliant with the Technology Adapter API must be created and registered. When a Data Product is successfully deployed all of its metadata (contained in its descriptor) are sent to the Marketplace, and are then available to all consumers; in the following section, we specify how additional fields returned by the Technology Adapter's result can be shown in the marketplace UI pages.
Technology Adapter API details
The Provisioning Status returned by the provisioning methods of the Specific Provisioners contains a "free" field, where the Technology Adapter implementer can add additional details (like URLs, descriptions, etc). The structure of the status returned is similar to:
{
"status": "RUNNING" | "COMPLETED" | "FAILED",
"info": {
"publicInfo": {},
"privateInfo": {}
}
}
ATTENTION: WE SUGGEST TO PUT THE FIELD NAMES INSIDE publicInfo
and privateInfo
IN CAMEL OR SNAKE CASE. EVERY OTHER SEPARATOR WILL BE REPLACED WITH UNDERSCORES.
As you can see the info
is a field that can contain different public and private details. Only details in the publicInfo
object will be displayed to consumers in the Marketplace, while all the values put in the privateInfo
will be stored in the deployed descriptor, but will not be shown in the Marketplace UI.
There is no limit to how many values can be set in those fields, but only the ones compliant with the following specification will be rendered in the "Technical Information" card of the Marketplace module. Invalid data is ignored and if there is no valid data to be shown, the "Technical Information" card will not be displayed.
The info
must be an object that contains 2 objects: publicInfo
and privateInfo
. These objects can contain other objects, one for each field you want to represent. As already explained, only the valid ones from the publicInfo
object will be displayed. Each object is related to a specific key of the publicInfo
object and must contain the following fields: type
, label
and value
. An optional href
field is also supported for links. The values currently supported for the type
field are string
and date
.
The following examples show how to write the field objects for each supported type:
String
To show in the UI a string field with the label "MyString" and value "MyValue", just return the following "deployInfo" object:
{
...
"info": {
"publicInfo": {
"aString": {
"type": "string",
"label": "MyString",
"value": "MyValue"
}
},
"privateInfo": {}
}
}
Links
To show in the UI an anchor field with the label "MyLink" and value "MyValue" that once clicked forwards the user to "http://my.remote.url", just return the following "deployInfo" object:
{
...
"info": {
"publicInfo": {
"aLink": {
"type": "string",
"label": "MyLink",
"value": "MyValue",
"href": "http://my.remote.url"
}
},
"privateInfo": {}
}
}
As you can see, there is no need to specify a different type, since the clickable link rendering depends on the presence of the optional href field.
Date
To show in the UI a date field with the label "MyDate", just return the following "deployInfo" object:
{
...
"info": {
"publicInfo": {
"aDate": {
"type": "date",
"label": "MyDate",
"value": "2011-12-03T10:15:30Z" // ISO UTC INSTANT
}
},
"privateInfo": {}
}
}
The value must be in ISO UTC instant format: yyyy-MM-ddThh:mm:ssZ
.