Skip to content

Commit ed6d807

Browse files
authored
Merge pull request #156 from datazip-inc/staging
chore: staging -> master v0.1.0
2 parents b1e15c4 + 1ee4050 commit ed6d807

73 files changed

Lines changed: 2515 additions & 1805 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ BACKEND_ENV_VARS = \
4848
POSTGRES_DB=postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable \
4949
LOGS_DIR=./logger/logs \
5050
SESSION_ON=true \
51-
TEMPORAL_ADDRESS=localhost:7233
51+
TEMPORAL_ADDRESS=localhost:7233 \
52+
CONTAINER_REGISTRY_BASE = registry-1.docker.io
5253

5354
# Frontend environment variables
5455
FRONTEND_ENV_VARS = \

docker-compose.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ x-encryption:
1515

1616
services:
1717
olake-ui:
18-
image: olakego/ui:latest
18+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/olakego/ui:latest
1919
pull_policy: always
2020
container_name: olake-ui
2121
environment:
22+
CONTAINER_REGISTRY_BASE: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}
2223
PERSISTENT_DIR: *hostPersistencePath
2324
OLAKE_SECRET_KEY: *encryptionKey
2425
ports:
@@ -43,7 +44,7 @@ services:
4344
start_period: 30s # Give it time to start up before first health check
4445

4546
signup-init:
46-
image: curlimages/curl:latest
47+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/curlimages/curl:latest
4748
container_name: olake-signup-init
4849
networks:
4950
- temporal-network
@@ -85,7 +86,7 @@ services:
8586
restart: "no"
8687

8788
temporal-worker:
88-
image: olakego/ui-worker:latest
89+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/olakego/ui-worker:latest
8990
pull_policy: always
9091
container_name: olake-temporal-worker
9192
networks:
@@ -94,6 +95,7 @@ services:
9495
- /var/run/docker.sock:/var/run/docker.sock
9596
- <<: *workerConfigVolumeDetails
9697
environment:
98+
CONTAINER_REGISTRY_BASE: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}
9799
TEMPORAL_ADDRESS: "temporal:7233"
98100
OLAKE_SECRET_KEY: *encryptionKey
99101
PERSISTENT_DIR: *hostPersistencePath
@@ -106,7 +108,7 @@ services:
106108

107109
postgresql:
108110
container_name: temporal-postgresql
109-
image: postgres:13
111+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/library/postgres:13
110112
environment:
111113
POSTGRES_USER: temporal
112114
POSTGRES_PASSWORD: temporal
@@ -127,7 +129,7 @@ services:
127129

128130
temporal:
129131
container_name: temporal
130-
image: temporalio/auto-setup:1.22.3
132+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/temporalio/auto-setup:1.22.3
131133
depends_on:
132134
postgresql:
133135
condition: service_healthy
@@ -152,7 +154,7 @@ services:
152154

153155
temporal-ui:
154156
container_name: temporal-ui
155-
image: temporalio/ui:2.16.2
157+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/temporalio/ui:2.16.2
156158
depends_on:
157159
temporal:
158160
condition: service_started
@@ -166,7 +168,7 @@ services:
166168

167169
elasticsearch:
168170
container_name: temporal-elasticsearch
169-
image: elasticsearch:7.17.10
171+
image: ${CONTAINER_REGISTRY_BASE:-registry-1.docker.io}/library/elasticsearch:7.17.10
170172
environment:
171173
- cluster.routing.allocation.disk.threshold_enabled=true
172174
- cluster.routing.allocation.disk.watermark.low=512mb

server/conf/app.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ postgresdb = ${POSTGRES_DB||postgres://temporal:temporal@postgresql:5432/postgre
66
logsdir = ${LOGS_DIR||./logger/logs}
77
sessionon = ${SESSION_ON||true}
88
TEMPORAL_ADDRESS = ${TEMPORAL_ADDRESS||temporal:7233}
9+
CONTAINER_REGISTRY_BASE = ${CONTAINER_REGISTRY_BASE||registry-1.docker.io}

server/go.mod

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ go 1.24.2
55
require github.com/beego/beego/v2 v2.3.8
66

77
require (
8-
github.com/aws/aws-sdk-go-v2/config v1.29.17
8+
github.com/aws/aws-sdk-go-v2/config v1.31.0
9+
github.com/aws/aws-sdk-go-v2/service/ecr v1.49.0
910
github.com/aws/aws-sdk-go-v2/service/kms v1.41.1
1011
github.com/lib/pq v1.10.9
1112
github.com/oklog/ulid v1.3.1
@@ -16,18 +17,18 @@ require (
1617
)
1718

1819
require (
19-
github.com/aws/aws-sdk-go-v2 v1.36.5 // indirect
20-
github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect
21-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect
22-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect
23-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect
20+
github.com/aws/aws-sdk-go-v2 v1.38.0
21+
github.com/aws/aws-sdk-go-v2/credentials v1.18.4 // indirect
22+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 // indirect
23+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 // indirect
24+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 // indirect
2425
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
25-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect
26-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect
27-
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect
28-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect
29-
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect
30-
github.com/aws/smithy-go v1.22.4 // indirect
26+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect
27+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 // indirect
28+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 // indirect
29+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 // indirect
30+
github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 // indirect
31+
github.com/aws/smithy-go v1.22.5 // indirect
3132
)
3233

3334
require (

server/go.sum

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,36 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
22
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
33
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
44
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5-
github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0=
6-
github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
7-
github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0=
8-
github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8=
9-
github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0=
10-
github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc=
11-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU=
12-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8=
13-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s=
14-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo=
15-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM=
16-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
5+
github.com/aws/aws-sdk-go-v2 v1.38.0 h1:UCRQ5mlqcFk9HJDIqENSLR3wiG1VTWlyUfLDEvY7RxU=
6+
github.com/aws/aws-sdk-go-v2 v1.38.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg=
7+
github.com/aws/aws-sdk-go-v2/config v1.31.0 h1:9yH0xiY5fUnVNLRWO0AtayqwU1ndriZdN78LlhruJR4=
8+
github.com/aws/aws-sdk-go-v2/config v1.31.0/go.mod h1:VeV3K72nXnhbe4EuxxhzsDc/ByrCSlZwUnWH52Nde/I=
9+
github.com/aws/aws-sdk-go-v2/credentials v1.18.4 h1:IPd0Algf1b+Qy9BcDp0sCUcIWdCQPSzDoMK3a8pcbUM=
10+
github.com/aws/aws-sdk-go-v2/credentials v1.18.4/go.mod h1:nwg78FjH2qvsRM1EVZlX9WuGUJOL5od+0qvm0adEzHk=
11+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 h1:GicIdnekoJsjq9wqnvyi2elW6CGMSYKhdozE7/Svh78=
12+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3/go.mod h1:R7BIi6WNC5mc1kfRM7XM/VHC3uRWkjc396sfabq4iOo=
13+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 h1:o9RnO+YZ4X+kt5Z7Nvcishlz0nksIt2PIzDglLMP0vA=
14+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3/go.mod h1:+6aLJzOG1fvMOyzIySYjOFjcguGvVRL68R+uoRencN4=
15+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 h1:joyyUFhiTQQmVK6ImzNU9TQSNRNeD9kOklqTzyk5v6s=
16+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3/go.mod h1:+vNIyZQP3b3B1tSLI0lxvrU9cfM7gpdRXMFfm67ZcPc=
1717
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
1818
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
19-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc=
20-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ=
21-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI=
22-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4=
19+
github.com/aws/aws-sdk-go-v2/service/ecr v1.49.0 h1:NgkSYzgM3UhdSrXUKkl49FhbIPpNguZE4EXEGRhDcEU=
20+
github.com/aws/aws-sdk-go-v2/service/ecr v1.49.0/go.mod h1:bi1dAg6vk8KC8nyf6DjQ3dkNJbzTirMSmZHbcRNa2vE=
21+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM=
22+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44=
23+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 h1:ieRzyHXypu5ByllM7Sp4hC5f/1Fy5wqxqY0yB85hC7s=
24+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3/go.mod h1:O5ROz8jHiOAKAwx179v+7sHMhfobFVi6nZt8DEyiYoM=
2325
github.com/aws/aws-sdk-go-v2/service/kms v1.41.1 h1:dkaX98cOXw4EgqpDXPqrVVLjsPR9T24wA2TcjrQiank=
2426
github.com/aws/aws-sdk-go-v2/service/kms v1.41.1/go.mod h1:Pqd9k4TuespkireN206cK2QBsaBTL6X+VPAez5Qcijk=
25-
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg=
26-
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc=
27-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg=
28-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E=
29-
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0=
30-
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w=
31-
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
32-
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
27+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 h1:Mc/MKBf2m4VynyJkABoVEN+QzkfLqGj0aiJuEe7cMeM=
28+
github.com/aws/aws-sdk-go-v2/service/sso v1.28.0/go.mod h1:iS5OmxEcN4QIPXARGhavH7S8kETNL11kym6jhoS7IUQ=
29+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 h1:6csaS/aJmqZQbKhi1EyEMM7yBW653Wy/B9hnBofW+sw=
30+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0/go.mod h1:59qHWaY5B+Rs7HGTuVGaC32m0rdpQ68N8QCN3khYiqs=
31+
github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 h1:MG9VFW43M4A8BYeAfaJJZWrroinxeTi2r3+SnmLQfSA=
32+
github.com/aws/aws-sdk-go-v2/service/sts v1.37.0/go.mod h1:JdeBDPgpJfuS6rU/hNglmOigKhyEZtBmbraLE4GK1J8=
33+
github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw=
34+
github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
3335
github.com/beego/beego/v2 v2.3.8 h1:wplhB1pF4TxR+2SS4PUej8eDoH4xGfxuHfS7wAk9VBc=
3436
github.com/beego/beego/v2 v2.3.8/go.mod h1:8vl9+RrXqvodrl9C8yivX1e6le6deCK6RWeq8R7gTTg=
3537
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=

server/internal/docker/runner.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"strings"
1212

1313
"github.com/beego/beego/v2/core/logs"
14+
"github.com/beego/beego/v2/server/web"
1415
"github.com/datazip/olake-frontend/server/internal/constants"
1516
"github.com/datazip/olake-frontend/server/internal/database"
1617
"github.com/datazip/olake-frontend/server/internal/telemetry"
@@ -84,9 +85,6 @@ func (r *Runner) writeConfigFiles(workDir string, configs []FileConfig) error {
8485

8586
// GetDockerImageName constructs a Docker image name based on source type and version
8687
func (r *Runner) GetDockerImageName(sourceType, version string) string {
87-
if version == "" {
88-
version = "latest"
89-
}
9088
return fmt.Sprintf("olakego/source-%s:%s", sourceType, version)
9189
}
9290

@@ -97,7 +95,10 @@ func (r *Runner) ExecuteDockerCommand(ctx context.Context, flag string, command
9795
return nil, err
9896
}
9997

100-
dockerArgs := r.buildDockerArgs(flag, command, sourceType, version, configPath, outputDir, additionalArgs...)
98+
dockerArgs := r.buildDockerArgs(ctx, flag, command, sourceType, version, configPath, outputDir, additionalArgs...)
99+
if len(dockerArgs) == 0 {
100+
return nil, fmt.Errorf("failed to build docker args")
101+
}
101102

102103
logs.Info("Running Docker command: docker %s\n", strings.Join(dockerArgs, " "))
103104

@@ -117,17 +118,34 @@ func (r *Runner) ExecuteDockerCommand(ctx context.Context, flag string, command
117118
}
118119

119120
// buildDockerArgs constructs Docker command arguments
120-
func (r *Runner) buildDockerArgs(flag string, command Command, sourceType, version, configPath, outputDir string, additionalArgs ...string) []string {
121+
func (r *Runner) buildDockerArgs(ctx context.Context, flag string, command Command, sourceType, version, configPath, outputDir string, additionalArgs ...string) []string {
121122
hostOutputDir := r.getHostOutputDir(outputDir)
122-
dockerArgs := []string{"run", "--rm"}
123123

124-
if version == "latest" {
125-
dockerArgs = append(dockerArgs, "--pull=always")
124+
repositoryBase, err := web.AppConfig.String("CONTAINER_REGISTRY_BASE")
125+
if err != nil {
126+
logs.Critical("failed to get CONTAINER_REGISTRY_BASE: %s", err)
127+
return nil
126128
}
129+
imageName := r.GetDockerImageName(sourceType, version)
130+
// If using ECR, ensure login before run
131+
if strings.Contains(repositoryBase, "ecr") {
132+
imageName = fmt.Sprintf("%s/%s", repositoryBase, imageName)
133+
accountID, region, _, err := utils.ParseECRDetails(imageName)
134+
if err != nil {
135+
logs.Critical("failed to parse ECR details: %s", err)
136+
return nil
137+
}
138+
if err := utils.DockerLoginECR(ctx, region, accountID); err != nil {
139+
logs.Critical("failed to login to ECR: %s", err)
140+
return nil
141+
}
142+
}
143+
144+
dockerArgs := []string{"run", "--rm"}
127145

128146
dockerArgs = append(dockerArgs,
129147
"-v", fmt.Sprintf("%s:/mnt/config", hostOutputDir),
130-
r.GetDockerImageName(sourceType, version),
148+
imageName,
131149
string(command),
132150
fmt.Sprintf("--%s", flag), fmt.Sprintf("/mnt/config/%s", filepath.Base(configPath)),
133151
)

server/internal/handlers/destination.go

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"encoding/json"
55
"fmt"
66
"net/http"
7-
"strings"
87
"time"
98

109
"github.com/beego/beego/v2/core/logs"
@@ -190,43 +189,32 @@ func (c *DestHandler) DeleteDestination() {
190189

191190
// @router /project/:projectid/destinations/test [post]
192191
func (c *DestHandler) TestConnection() {
193-
// Will be used for multi-tenant filtering in the future
194192
var req models.DestinationTestConnectionRequest
195193
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &req); err != nil {
196194
utils.ErrorResponse(&c.Controller, http.StatusBadRequest, "Invalid request format")
197195
return
198196
}
199197

200198
if req.Type == "" {
201-
utils.ErrorResponse(&c.Controller, http.StatusBadRequest, "Destination type is required")
199+
utils.ErrorResponse(&c.Controller, http.StatusBadRequest, "valid destination type is required")
202200
return
203201
}
204202

205-
if req.Version == "" {
206-
utils.ErrorResponse(&c.Controller, http.StatusBadRequest, "Destination version is required")
203+
if req.Version == "" || req.Version == "latest" {
204+
utils.ErrorResponse(&c.Controller, http.StatusBadRequest, "valid destination version required")
207205
return
208206
}
209207

210-
driver := utils.Ternary(req.Source == "", "postgres", req.Source).(string)
208+
// Determine driver and available tags
211209
version := req.Version
212-
213-
// check if tags available through dockerhub
214-
_, err := utils.GetDriverImageTags(c.Ctx.Request.Context(), "", false)
215-
if err != nil {
216-
// if dockerhub api fails then check for cached images and use any of them with same version
217-
images, err := utils.GetCachedImages(c.Ctx.Request.Context())
210+
driver := req.Source
211+
if driver == "" {
212+
var err error
213+
_, driver, err = utils.GetDriverImageTags(c.Ctx.Request.Context(), "", true)
218214
if err != nil {
219-
utils.ErrorResponse(&c.Controller, http.StatusInternalServerError, fmt.Sprintf("Failed to getc cached images config: %s", err))
215+
utils.ErrorResponse(&c.Controller, http.StatusInternalServerError, fmt.Sprintf("failed to get valid driver image tags: %s", err))
220216
return
221217
}
222-
for _, image := range images {
223-
if strings.HasSuffix(image, version) {
224-
untagged := strings.Split(image, ":")[0] // olakego/source-postgres
225-
lastPart := strings.Split(untagged, "/")[1] // source-postgres
226-
driver = strings.TrimPrefix(lastPart, "source-") // postgres
227-
break
228-
}
229-
}
230218
}
231219

232220
encryptedConfig, err := utils.Encrypt(req.Config)
@@ -235,7 +223,6 @@ func (c *DestHandler) TestConnection() {
235223
return
236224
}
237225

238-
// check if destination asociated with job
239226
result, err := c.tempClient.TestConnection(c.Ctx.Request.Context(), "destination", driver, version, encryptedConfig)
240227
if result == nil {
241228
result = map[string]interface{}{
@@ -280,7 +267,7 @@ func (c *DestHandler) GetDestinationVersions() {
280267
}
281268

282269
// get available driver versions
283-
versions, err := utils.GetDriverImageTags(c.Ctx.Request.Context(), "", true)
270+
versions, _, err := utils.GetDriverImageTags(c.Ctx.Request.Context(), "", true)
284271
if err != nil {
285272
utils.ErrorResponse(&c.Controller, http.StatusInternalServerError, fmt.Sprintf("failed to fetch driver versions: %s", err))
286273
return
@@ -365,6 +352,12 @@ func (c *DestHandler) GetDestinationSpec() {
365352
"order": 5,
366353
"default": "",
367354
},
355+
"s3_endpoint": map[string]interface{}{
356+
"type": "string",
357+
"title": "S3 Endpoint",
358+
"description": "Specifies the endpoint URL for the S3 service (e.g., MinIO)",
359+
"order": 6,
360+
},
368361
},
369362
"required": []string{"s3_bucket", "s3_region"},
370363
},

server/internal/handlers/source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ func (c *SourceHandler) GetSourceVersions() {
284284
return
285285
}
286286

287-
versions, err := utils.GetDriverImageTags(c.Ctx.Request.Context(), fmt.Sprintf("olakego/source-%s", sourceType), true)
287+
versions, _, err := utils.GetDriverImageTags(c.Ctx.Request.Context(), fmt.Sprintf("olakego/source-%s", sourceType), true)
288288
if err != nil {
289289
utils.ErrorResponse(&c.Controller, http.StatusInternalServerError, fmt.Sprintf("failed to fetch driver versions: %s", err))
290290
return

0 commit comments

Comments
 (0)