160 lines
9.6 KiB
JSON
160 lines
9.6 KiB
JSON
|
|
{
|
||
|
|
"apiVersion": "camel.apache.org/v1",
|
||
|
|
"kind": "Kamelet",
|
||
|
|
"metadata": {
|
||
|
|
"name": "snowflake-sink",
|
||
|
|
"annotations": {
|
||
|
|
"camel.apache.org/kamelet.support.level": "Preview",
|
||
|
|
"camel.apache.org/catalog.version": "4.22.1",
|
||
|
|
"camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjIiIGJhc2VQcm9maWxlPSJ0aW55LXBzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTY1IDE1NTkiIHdpZHRoPSIxNTY1IiBoZWlnaHQ9IjE1NTkiPgoJPHRpdGxlPmxvZ28tYmx1ZS1zdmcgY29weS1zdmc8L3RpdGxlPgoJPGRlZnM+CgkJPGNsaXBQYXRoIGNsaXBQYXRoVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iY3AxIj4KCQkJPHBhdGggZD0iTTAuMjQgMEw2ODkzLjI2IDBMNjg5My4yNiAxNTU4LjIyTDAuMjQgMTU1OC4yMkwwLjI0IDBaIiAvPgoJCTwvY2xpcFBhdGg+Cgk8L2RlZnM+Cgk8c3R5bGU+CgkJdHNwYW4geyB3aGl0ZS1zcGFjZTpwcmUgfQoJCS5zaHAwIHsgZmlsbDogIzI5YjVlOCB9IAoJPC9zdHlsZT4KCTxnIGlkPSJIT01FUEFHRSI+CgkJPGcgaWQ9IlNub3dmbGFrZS1Ib21lcGFnZS1wbGF0Zm9ybS1hbHQtMy1Db3B5Ij4KCQkJPGcgaWQ9IkNvbXBvbmVudHMtLy1OYXZpZ2F0aW9uLS8tTWFpbiI+CgkJCQk8ZyBpZD0iTG9nby0vLVNub3dmbGFrZS1CbHVlIj4KCQkJCQk8ZyBpZD0iTGF5ZXIiPgoJCQkJCQk8ZyBpZD0iTWFzayI+CgkJCQkJCTwvZz4KCQkJCQkJPGcgaWQ9IkNsaXAtUGF0aDogQ2xpcC1QYXRoOiBGaWxsLTEiIGNsaXAtcGF0aD0idXJsKCNjcDEpIj4KCQkJCQkJCTxnIGlkPSJDbGlwLVBhdGg6IEZpbGwtMSI+CgkJCQkJCQkJPHBhdGggaWQ9IkZpbGwtMSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGFzcz0ic2hwMCIgZD0iTTUyMi42MyA4MDcuNTdDNTE1LjYzIDgzMC4wNyA1MDAuNDQgODUwLjA2IDQ3OC4wNyA4NjIuODRMMTQ2LjcyIDEwNTIuNjlDOTkuOTIgMTA3OS4zOSA0MC4zIDEwNjMuNTYgMTMuNDQgMTAxNy4zOEMtMTMuNTkgOTcwLjk0IDIuMzIgOTExLjg2IDQ5LjA4IDg4NS4wOEwyMzQuMjYgNzc5LjE3TDQ5LjA4IDY3Mi45OEMyLjMyIDY0Ni4yNCAtMTMuNjcgNTg3LjE1IDEzLjQ0IDU0MC44OEM0MC4zIDQ5NC41OCA5OS45MiA0NzguNyAxNDYuNzIgNTA1LjRMNDc4LjA3IDY5NS4xM0M1MDEuMzcgNzA4LjQ2IDUxNi45NCA3MjkuNiA1MjMuNDggNzUzLjI0QzUyNS42OCA3NjAuODQgNTI2LjY2IDc2OC40NCA1MjcuMDQgNzc2LjA4QzUyNy4zIDc4Ni42IDUyNS45NCA3OTcuMjYgNTIyLjYzIDgwNy41N1pNNjEyLjU0IDk4NS4zOEM2NjMgOTg4Ljk4IDcwMi44NCAxMDMwLjg0IDcwMi44NCAxMDgxLjc3TDcwMi44NCAxNDYxLjM2QzcwMi44NCAxNTE0Ljg5IDY1OS4wNSAxNTU4LjIyIDYwNS4yOSAxNTU4LjIyQzU1MS4yNyAxNTU4LjIyIDUwNy42NSAxNTE0Ljg5IDUwNy42NSAxNDYxLjM2TDUwNy42NSAxMjQ5LjA1TDMyMS44NCAxMzU1LjI5QzI3NS4yNSAxMzgyLjIgMjE1LjY3IDEzNjYuMjggMTg4LjYgMTMyMC4wNkMxNjEuNyAxMjczLjc1IDE3Ny42MSAxMjE0LjM3IDIyNC4yOSAxMTg3LjYzTDU1NS45IDk5OC4wMkM1NzMuNzIgOTg3LjcxIDU5My40OSA5ODMuNzYgNjEyLjU0IDk4NS4zOFpNOTUyLjE3IDU3Mi44NUM5MDEuNTkgNTY5LjE1IDg2MS44MyA1MjcuMjIgODYxLjgzIDQ3Ni4zM0w4NjEuODMgOTYuNjlDODYxLjgzIDQzLjM0IDkwNS4zNyAwIDk1OS40MyAwQzEwMTMuNDQgMCAxMDU3LjA3IDQzLjM0IDEwNTcuMDcgOTYuNjlMMTA1Ny4wNyAzMDkuMTNMMTI0Mi43NSAyMDIuNzJDMTI4OS40MyAxNzUuOTggMTM0OS4wNCAxOTEuODUgMTM3NS45NSAyMzguMDhDMTQwMi44IDI4NC41NiAxMzg2Ljk4IDM0My42OCAxMzQwLjI2IDM3MC40MkwxMDA4LjY5IDU2MC4yQzk5MC44NyA1NzAuMzggOTcxLjE0IDU3NC4zNyA5NTIuMTcgNTcyLjg1Wk0yMjQuMjkgMzcwLjQyQzE3Ny42MSAzNDMuNjggMTYxLjcgMjg0LjU2IDE4OC42IDIzOC4wOEMyMTUuNjcgMTkxLjg1IDI3NS4yNSAxNzUuOTggMzIxLjg0IDIwMi43Mkw1MDcuNjUgMzA5LjEzTDUwNy42NSA5Ni42OUM1MDcuNjUgNDMuMzQgNTUxLjI3IDAgNjA1LjI5IDBDNjU5LjA1IDAgNzAyLjg0IDQzLjM0IDcwMi44NCA5Ni42OUw3MDIuODQgNDc2LjMzQzcwMi44NCA1MjcuMjIgNjYzIDU2OS4xNSA2MTIuNTQgNTcyLjg1QzU5My40OSA1NzQuMzcgNTczLjcyIDU3MC4zOCA1NTUuOSA1NjAuMkwyMjQuMjkgMzcwLjQyWk04MTkuODMgOTUyLjc0QzgxNS44OCA5NTYuNzcgODA4LjI4IDk2MC4wNCA4MDIuNTEgOTYwLjA0TDc2MS45OSA5NjAuMDRDNzU2LjQzIDk2MC4wNCA3NDguNzEgOTU2Ljc3IDc0NC42OCA5NTIuNzRMNjA2Ljk0IDgxNi4yN0M2MDMgODEyLjQxIDU5OS44MSA4MDQuNjggNTk5LjgxIDc5OS4yNUw1OTkuODEgNzU4Ljk3QzU5OS44MSA3NTMuNDEgNjAzIDc0NS42OSA2MDYuOTQgNzQxLjc4TDc0NC42OCA2MDUuMjdDNzQ4LjcxIDYwMS4yOSA3NTYuNDMgNTk4LjEgNzYxLjk5IDU5OC4xTDgwMi41MSA1OTguMUM4MDguMTYgNTk4LjEgODE1Ljg4IDYwMS4yOSA4MTkuODMgNjA1LjI3TDk1Ny42NSA3NDEuNzhDOTYxLjU5IDc0NS42OSA5NjQuNzcgNzUzLjQxIDk2NC43NyA3NTguOTdMOTY0Ljc3IDc5OS4yNUM5NjQuNzcgODA0LjY4IDk2MS41OSA4MTIuNDEgOTU3LjY1IDgxNi4yN0w4MTkuODMgOTUyLjc0Wk04NDcuNDkgNzc4LjM3Qzg0Ny40OSA3NzIuODUgODQ0LjE0IDc2NS4xNyA4NDAuMTkgNzYxLjA5TDgwMC4yNiA3MjEuN0M3OTYuMzYgNzE3LjggNzg4LjYgNzE0LjU3IDc4My4wNCA3MTQuNTdMNzgxLjQ3IDcxNC41N0M3NzUuOTEgNzE0LjU3IDc2OC4xOSA3MTcuOCA3NjQuMzIgNzIxLjdMNzI0LjQgNzYxLjA5QzcyMC40MSA3NjUuMTcgNzE3LjM1IDc3Mi44NSA3MTcuMzUgNzc4LjM3TDcxNy4zNSA3NzkuOTRDNzE3LjM1IDc4NS4zNyA3MjAuNDEgNzkyLjk3IDcyNC40IDc5Ni45Nkw3NjQuMzIgODM2LjQzQzc2OC4yMyA4NDAuMzQgNzc1LjkxIDg0My41NiA3ODEuNDcgODQzLjU2TDc4My4wNCA4NDMuNTZDNzg4LjYgODQzLjU2IDc5Ni4zNiA4NDAuMzQgODAwLjI2IDgzNi40M0w4NDAuMTkgNzk2Ljk2Qzg0NC4xNCA3OTIuOTcgODQ3LjQ5IDc4NS4zNyA4NDcuNDkgNzc5Ljk0TDg0Ny40OSA3NzguMzdaTTEzNDAuMjYgMTE4Ny42M0MxMzg2L
|
||
|
|
"camel.apache.org/provider": "Apache Software Foundation",
|
||
|
|
"camel.apache.org/kamelet.group": "SQL",
|
||
|
|
"camel.apache.org/kamelet.namespace": "Database"
|
||
|
|
},
|
||
|
|
"labels": {
|
||
|
|
"camel.apache.org/kamelet.type": "sink"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"spec": {
|
||
|
|
"definition": {
|
||
|
|
"title": "Snowflake Sink",
|
||
|
|
"description": "Send data to a Snowflake Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.",
|
||
|
|
"required": [
|
||
|
|
"instanceUrl",
|
||
|
|
"username",
|
||
|
|
"password",
|
||
|
|
"query"
|
||
|
|
],
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"instanceUrl": {
|
||
|
|
"title": "Instance URL",
|
||
|
|
"description": "The Instance url",
|
||
|
|
"type": "string",
|
||
|
|
"example": "instance.snowflakecomputing.com"
|
||
|
|
},
|
||
|
|
"username": {
|
||
|
|
"title": "Username",
|
||
|
|
"description": "The username to access a secured Snowflake Database.",
|
||
|
|
"type": "string",
|
||
|
|
"x-descriptors": [
|
||
|
|
"urn:camel:group:credentials"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"password": {
|
||
|
|
"title": "Password",
|
||
|
|
"description": "The password to access a secured Snowflake Database.",
|
||
|
|
"type": "string",
|
||
|
|
"format": "password",
|
||
|
|
"x-descriptors": [
|
||
|
|
"urn:camel:group:credentials"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"query": {
|
||
|
|
"title": "Query",
|
||
|
|
"description": "The query to execute against the Snowflake Database.",
|
||
|
|
"type": "string",
|
||
|
|
"example": "INSERT INTO accounts (username,city) VALUES (:#username,:#city)"
|
||
|
|
},
|
||
|
|
"databaseName": {
|
||
|
|
"title": "Database Name",
|
||
|
|
"description": "The name of the Snowflake Database.",
|
||
|
|
"type": "string"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"types": {
|
||
|
|
"in": {
|
||
|
|
"mediaType": "application/json"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"dependencies": [
|
||
|
|
"camel:jackson",
|
||
|
|
"camel:kamelet",
|
||
|
|
"camel:sql",
|
||
|
|
"mvn:net.snowflake:snowflake-jdbc:3.24.2",
|
||
|
|
"mvn:org.apache.commons:commons-dbcp2:2.14.0"
|
||
|
|
],
|
||
|
|
"template": {
|
||
|
|
"beans": [
|
||
|
|
{
|
||
|
|
"name": "local-sql-snowflake-sink",
|
||
|
|
"type": "#class:org.apache.camel.component.sql.SqlComponent",
|
||
|
|
"properties": {
|
||
|
|
"autowiredEnabled": "false"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "dsBean",
|
||
|
|
"type": "#class:net.snowflake.client.jdbc.SnowflakeBasicDataSource",
|
||
|
|
"properties": {
|
||
|
|
"user": "{{username}}",
|
||
|
|
"password": "{{password}}",
|
||
|
|
"url": "jdbc:snowflake://{{instanceUrl}}",
|
||
|
|
"databaseName": "{{?databaseName}}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"from": {
|
||
|
|
"uri": "kamelet:source",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"unmarshal": {
|
||
|
|
"json": {
|
||
|
|
"library": "Jackson"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"to": {
|
||
|
|
"uri": "{{local-sql-snowflake-sink}}:{{query}}",
|
||
|
|
"parameters": {
|
||
|
|
"dataSource": "#bean:{{dsBean}}"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"propertiesSchema": {
|
||
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
|
|
"type": "object",
|
||
|
|
"title": "Snowflake Sink",
|
||
|
|
"description": "Send data to a Snowflake Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.",
|
||
|
|
"required": [
|
||
|
|
"instanceUrl",
|
||
|
|
"username",
|
||
|
|
"password",
|
||
|
|
"query"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"instanceUrl": {
|
||
|
|
"type": "string",
|
||
|
|
"title": "Instance URL",
|
||
|
|
"description": "The Instance url"
|
||
|
|
},
|
||
|
|
"username": {
|
||
|
|
"type": "string",
|
||
|
|
"title": "Username",
|
||
|
|
"description": "The username to access a secured Snowflake Database."
|
||
|
|
},
|
||
|
|
"password": {
|
||
|
|
"type": "string",
|
||
|
|
"title": "Password",
|
||
|
|
"description": "The password to access a secured Snowflake Database.",
|
||
|
|
"format": "password"
|
||
|
|
},
|
||
|
|
"query": {
|
||
|
|
"type": "string",
|
||
|
|
"title": "Query",
|
||
|
|
"description": "The query to execute against the Snowflake Database."
|
||
|
|
},
|
||
|
|
"databaseName": {
|
||
|
|
"type": "string",
|
||
|
|
"title": "Database Name",
|
||
|
|
"description": "The name of the Snowflake Database."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|