Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit cec837b

Browse files
committed
Fix carvel usage for external database
1 parent 164a786 commit cec837b

File tree

7 files changed

+84
-8
lines changed

7 files changed

+84
-8
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#@ load("external.star", "name")
2+
#@ load("external.star", "username")
3+
#@ load("external.star", "password")
4+
#@ load("@ytt:base64", "base64")
5+
6+
apiVersion: v1
7+
kind: Secret
8+
metadata:
9+
name: #@ name()
10+
labels:
11+
app: #@ name()
12+
data:
13+
external-user: #@ base64.encode(username())
14+
external-password: #@ base64.encode(password())
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
load("@ytt:data", "data")
2+
3+
def name():
4+
return data.values.name
5+
end
6+
7+
def username():
8+
return data.values.username
9+
end
10+
11+
def password():
12+
return data.values.password
13+
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#@data/values-schema
2+
---
3+
name: ""
4+
username: ""
5+
password: ""

src/carvel/config/db/db-dataflow.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,20 @@ image:
3333
registrySecretRef: #@ data.values.scdf.registry.secret.ref
3434
#@ end
3535

36+
#@ def db_external_values():
37+
name: db-dataflow
38+
username: #@ data.values.scdf.server.database.username
39+
password: #@ data.values.scdf.server.database.password
40+
#@ end
41+
3642
#@ if mariadb_enabled():
3743
--- #@ template.replace(overlay.apply(library.get("mariadb").with_data_values(db_mariadb_values()).eval(), db_overlay()))
3844
#@ end
3945

4046
#@ if postgres_enabled():
4147
--- #@ template.replace(overlay.apply(library.get("postgres").with_data_values(db_postgres_values()).eval(), db_overlay()))
4248
#@ end
49+
50+
#@ if not mariadb_enabled() and not postgres_enabled():
51+
--- #@ template.replace(overlay.apply(library.get("external").with_data_values(db_external_values()).eval(), db_overlay()))
52+
#@ end

src/carvel/config/db/db-skipper.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,20 @@ image:
3333
registrySecretRef: #@ data.values.scdf.registry.secret.ref
3434
#@ end
3535

36+
#@ def db_external_values():
37+
name: db-skipper
38+
username: #@ data.values.scdf.skipper.database.username
39+
password: #@ data.values.scdf.skipper.database.password
40+
#@ end
41+
3642
#@ if mariadb_enabled():
3743
--- #@ template.replace(overlay.apply(library.get("mariadb").with_data_values(db_mariadb_values()).eval(), db_overlay()))
3844
#@ end
3945

4046
#@ if postgres_enabled():
4147
--- #@ template.replace(overlay.apply(library.get("postgres").with_data_values(db_postgres_values()).eval(), db_overlay()))
4248
#@ end
49+
50+
#@ if not mariadb_enabled() and not postgres_enabled():
51+
--- #@ template.replace(overlay.apply(library.get("external").with_data_values(db_external_values()).eval(), db_overlay()))
52+
#@ end

src/carvel/config/db/db.star

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ def db_external_dataflow():
1212
x.setdefault("url", data.values.scdf.server.database.url)
1313
end
1414
if len(data.values.scdf.server.database.username) > 0:
15-
x.setdefault("username", data.values.scdf.server.database.username)
15+
x.setdefault("username", "${external-user}")
1616
end
1717
if len(data.values.scdf.server.database.password) > 0:
18-
x.setdefault("password", data.values.scdf.server.database.password)
18+
x.setdefault("password", "${external-password}")
1919
end
2020
if len(data.values.scdf.server.database.driverClassName) > 0:
2121
x.setdefault("driverClassName", data.values.scdf.server.database.driverClassName)
@@ -37,10 +37,10 @@ def db_external_skipper():
3737
x.setdefault("url", data.values.scdf.skipper.database.url)
3838
end
3939
if len(data.values.scdf.skipper.database.username) > 0:
40-
x.setdefault("username", data.values.scdf.skipper.database.username)
40+
x.setdefault("username", "${external-user}")
4141
end
4242
if len(data.values.scdf.skipper.database.password) > 0:
43-
x.setdefault("password", data.values.scdf.skipper.database.password)
43+
x.setdefault("password", "${external-password}")
4444
end
4545
if len(data.values.scdf.skipper.database.driverClassName) > 0:
4646
x.setdefault("driverClassName", data.values.scdf.skipper.database.driverClassName)

src/carvel/test/databases.test.ts

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe('databases', () => {
3434
expect(postgresDataflowDeployment).toBeTruthy();
3535
const postgresDataflowContainer = deploymentContainer(postgresDataflowDeployment, DB_POSTGRES_NAME);
3636
expect(postgresDataflowContainer?.image).toBe('postgres:10');
37-
const postgresDataflowSecret = findSecret(yaml, DB_SKIPPER_NAME);
37+
const postgresDataflowSecret = findSecret(yaml, DB_DATAFLOW_NAME);
3838
expect(postgresDataflowSecret).toBeTruthy();
3939
const postgresDataflowSecretData = postgresDataflowSecret?.data || {};
4040
expect(postgresDataflowSecretData['postgres-user']).toBe('ZGF0YWZsb3c=');
@@ -134,7 +134,7 @@ describe('databases', () => {
134134
expect(postgresDataflowDeployment).toBeTruthy();
135135
const postgresDataflowContainer = deploymentContainer(postgresDataflowDeployment, DB_POSTGRES_NAME);
136136
expect(postgresDataflowContainer?.image).toContain('postgres');
137-
const postgresDataflowSecret = findSecret(yaml, DB_SKIPPER_NAME);
137+
const postgresDataflowSecret = findSecret(yaml, DB_DATAFLOW_NAME);
138138
expect(postgresDataflowSecret).toBeTruthy();
139139
const postgresDataflowSecretData = postgresDataflowSecret?.data || {};
140140
expect(postgresDataflowSecretData['postgres-user']).toBe('ZGF0YWZsb3c=');
@@ -202,7 +202,7 @@ describe('databases', () => {
202202
expect(postgresDataflowDeployment).toBeTruthy();
203203
const postgresDataflowContainer = deploymentContainer(postgresDataflowDeployment, DB_POSTGRES_NAME);
204204
expect(postgresDataflowContainer?.image).toContain('postgres');
205-
const postgresDataflowSecret = findSecret(yaml, DB_SKIPPER_NAME);
205+
const postgresDataflowSecret = findSecret(yaml, DB_DATAFLOW_NAME);
206206
expect(postgresDataflowSecret).toBeTruthy();
207207
const postgresDataflowSecretData = postgresDataflowSecret?.data || {};
208208
expect(postgresDataflowSecretData['postgres-user']).toBe('user');
@@ -216,7 +216,11 @@ describe('databases', () => {
216216
...DEFAULT_REQUIRED_DATA_VALUES,
217217
'scdf.deploy.database.enabled=false',
218218
'scdf.server.database.url=fakeurl1',
219-
'scdf.skipper.database.url=fakeurl2'
219+
'scdf.server.database.username=fakeuser1',
220+
'scdf.server.database.password=fakepass1',
221+
'scdf.skipper.database.url=fakeurl2',
222+
'scdf.skipper.database.username=fakeuser2',
223+
'scdf.skipper.database.password=fakepass2'
220224
]
221225
});
222226
expect(result.success, result.stderr).toBeTruthy();
@@ -237,10 +241,30 @@ describe('databases', () => {
237241
const dataflowJson = dataflowDoc.toJSON();
238242
const dataflowDatasourceUrl = lodash.get(dataflowJson, 'spring.datasource.url') as string;
239243
expect(dataflowDatasourceUrl).toBe('fakeurl1');
244+
const dataflowDatasourceUsername = lodash.get(dataflowJson, 'spring.datasource.username') as string;
245+
expect(dataflowDatasourceUsername).toBe('${external-user}');
246+
const dataflowDatasourcePassword = lodash.get(dataflowJson, 'spring.datasource.password') as string;
247+
expect(dataflowDatasourcePassword).toBe('${external-password}');
248+
249+
const postgresDataflowSecret = findSecret(yaml, DB_DATAFLOW_NAME);
250+
expect(postgresDataflowSecret).toBeTruthy();
251+
const postgresDataflowSecretData = postgresDataflowSecret?.data || {};
252+
expect(postgresDataflowSecretData['external-user']).toBe('ZmFrZXVzZXIx');
253+
expect(postgresDataflowSecretData['external-password']).toBe('ZmFrZXBhc3Mx');
240254

241255
const skipperDoc = parseYamlDocument(skipperApplicationYaml);
242256
const skipperJson = skipperDoc.toJSON();
243257
const skipperDatasourceUrl = lodash.get(skipperJson, 'spring.datasource.url') as string;
244258
expect(skipperDatasourceUrl).toBe('fakeurl2');
259+
const skipperDatasourceUsername = lodash.get(skipperJson, 'spring.datasource.username') as string;
260+
expect(skipperDatasourceUsername).toBe('${external-user}');
261+
const skipperDatasourcePassword = lodash.get(skipperJson, 'spring.datasource.password') as string;
262+
expect(skipperDatasourcePassword).toBe('${external-password}');
263+
264+
const postgresSkipperSecret = findSecret(yaml, DB_SKIPPER_NAME);
265+
expect(postgresSkipperSecret).toBeTruthy();
266+
const postgresSkipperSecretData = postgresSkipperSecret?.data || {};
267+
expect(postgresSkipperSecretData['external-user']).toBe('ZmFrZXVzZXIy');
268+
expect(postgresSkipperSecretData['external-password']).toBe('ZmFrZXBhc3My');
245269
});
246270
});

0 commit comments

Comments
 (0)