diff --git a/src/configurations/destinations/rs/db-config.json b/src/configurations/destinations/rs/db-config.json index 6c6d9de0c..c1fe5e62e 100644 --- a/src/configurations/destinations/rs/db-config.json +++ b/src/configurations/destinations/rs/db-config.json @@ -44,6 +44,8 @@ "iamRoleARNForAuth", "clusterId", "clusterRegion", + "useServerless", + "workgroupName", "bucketName", "iamRoleARN", "roleBasedAuth", diff --git a/src/configurations/destinations/rs/schema.json b/src/configurations/destinations/rs/schema.json index 5290eb6d8..d7678a83b 100644 --- a/src/configurations/destinations/rs/schema.json +++ b/src/configurations/destinations/rs/schema.json @@ -941,19 +941,51 @@ "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" }, - "clusterId": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" - }, "clusterRegion": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" }, "useIAMForAuth": { "const": true + }, + "useServerless": { + "type": "boolean", + "default": false } }, - "required": ["clusterId", "clusterRegion", "iamRoleARNForAuth", "useIAMForAuth"] + "anyOf": [ + { + "properties": { + "clusterId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" + }, + "useServerless": { + "const": false + }, + "useIAMForAuth": { + "const": true + } + }, + "required": ["clusterId", "useIAMForAuth"] + }, + { + "properties": { + "workgroupName": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" + }, + "useIAMForAuth": { + "const": true + }, + "useServerless": { + "const": true + } + }, + "required": ["workgroupName", "useIAMForAuth", "useServerless"] + } + ], + "required": ["clusterRegion", "iamRoleARNForAuth", "useIAMForAuth"] } }, { diff --git a/src/configurations/destinations/rs/ui-config.json b/src/configurations/destinations/rs/ui-config.json index 94991e2b2..5e8d04057 100644 --- a/src/configurations/destinations/rs/ui-config.json +++ b/src/configurations/destinations/rs/ui-config.json @@ -40,12 +40,29 @@ "placeholder": "5439", "required": true }, + { + "type": "checkbox", + "preRequisiteField": [ + { + "name": "useIAMForAuth", + "selectedValue": true + } + ], + "label": "Use Redshift Serverless", + "value": "useServerless", + "required": false, + "default": false + }, { "type": "textInput", "preRequisiteField": [ { "name": "useIAMForAuth", "selectedValue": true + }, + { + "name": "useServerless", + "selectedValue": false } ], "label": "Cluster Id", @@ -55,6 +72,25 @@ "placeholder": "Cluster Identifier", "required": true }, + { + "type": "textInput", + "preRequisiteField": [ + { + "name": "useIAMForAuth", + "selectedValue": true + }, + { + "name": "useServerless", + "selectedValue": true + } + ], + "label": "Workgroup Name", + "value": "workgroupName", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$", + "regexErrorMessage": "Invalid Workgroup Name", + "placeholder": "Workgroup Name", + "required": true + }, { "type": "textInput", "preRequisiteField": [ diff --git a/src/configurations/destinations/singular/ui-config.json b/src/configurations/destinations/singular/ui-config.json index 5f1e76456..83d019335 100644 --- a/src/configurations/destinations/singular/ui-config.json +++ b/src/configurations/destinations/singular/ui-config.json @@ -43,14 +43,6 @@ "label": "Match ID mapping", "value": "match_id", "required": false, - "preRequisites": { - "featureFlags": [ - { - "configKey": "AMP_enable-singular-matchid", - "value": true - } - ] - }, "options": [ { "name": "Map match ID to context.device.advertisingId", diff --git a/src/configurations/sources/singer_shopify/db-config.json b/src/configurations/sources/singer_shopify/db-config.json index 6ef782fc3..a0ac6601d 100644 --- a/src/configurations/sources/singer_shopify/db-config.json +++ b/src/configurations/sources/singer_shopify/db-config.json @@ -3,7 +3,7 @@ "category": "singer-protocol", "displayName": "Shopify", "options": { - "image": "rudderstack/source-shopify:v8.2.9" + "image": "rudderstack/source-shopify:v8.3.7" }, "type": "cloudSource" } diff --git a/test/data/validation/destinations/rs.json b/test/data/validation/destinations/rs.json index 7419ae921..966873298 100644 --- a/test/data/validation/destinations/rs.json +++ b/test/data/validation/destinations/rs.json @@ -125,11 +125,117 @@ "result": false, "err": [ " must have required property 'clusterId'", + " must have required property 'workgroupName'", + " must have required property 'useServerless'", + " must match a schema in anyOf", " must have required property 'clusterRegion'", " must have required property 'iamRoleARNForAuth'", " must match \"then\" schema" ] }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": false, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": false, + "err": [ + "useServerless must be equal to constant", + " must have required property 'workgroupName'", + " must match a schema in anyOf", + " must match \"then\" schema" + ] + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "workgroupName": "workgroupName", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "workgroupName": "workgroupName", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, { "config": { "host": "test-host",