Skip to content

Commit 20c0997

Browse files
committed
use set-defautls to manage secrets default mount target
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 2539b8e commit 20c0997

File tree

5 files changed

+29
-4
lines changed

5 files changed

+29
-4
lines changed

loader/full-example.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ services:
2626
additional_contexts:
2727
foo: ./bar
2828
secrets:
29-
- secret1
29+
- source: secret1
30+
target: /run/secrets/secret1
3031
- source: secret2
3132
target: my_secret
3233
uid: '103'
@@ -257,7 +258,8 @@ services:
257258
restart: always
258259

259260
secrets:
260-
- secret1
261+
- source: secret1
262+
target: /run/secrets/secret1
261263
- source: secret2
262264
target: my_secret
263265
uid: '103'

loader/full-struct_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ func services(workingDir, homeDir string) types.Services {
6565
Secrets: []types.ServiceSecretConfig{
6666
{
6767
Source: "secret1",
68+
Target: "/run/secrets/secret1",
6869
},
6970
{
7071
Source: "secret2",
@@ -396,6 +397,7 @@ func services(workingDir, homeDir string) types.Services {
396397
Secrets: []types.ServiceSecretConfig{
397398
{
398399
Source: "secret1",
400+
Target: "/run/secrets/secret1",
399401
},
400402
{
401403
Source: "secret2",
@@ -627,6 +629,7 @@ services:
627629
target: foo
628630
secrets:
629631
- source: secret1
632+
target: /run/secrets/secret1
630633
- source: secret2
631634
target: my_secret
632635
uid: "103"
@@ -885,6 +888,7 @@ services:
885888
restart: always
886889
secrets:
887890
- source: secret1
891+
target: /run/secrets/secret1
888892
- source: secret2
889893
target: my_secret
890894
uid: "103"
@@ -1180,7 +1184,8 @@ func fullExampleJSON(workingDir, homeDir string) string {
11801184
"target": "foo",
11811185
"secrets": [
11821186
{
1183-
"source": "secret1"
1187+
"source": "secret1",
1188+
"target": "/run/secrets/secret1"
11841189
},
11851190
{
11861191
"source": "secret2",
@@ -1544,7 +1549,8 @@ func fullExampleJSON(workingDir, homeDir string) string {
15441549
"restart": "always",
15451550
"secrets": [
15461551
{
1547-
"source": "secret1"
1552+
"source": "secret1",
1553+
"target": "/run/secrets/secret1"
15481554
},
15491555
{
15501556
"source": "secret2",

loader/loader_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,7 @@ networks:
828828
Secrets: []types.ServiceSecretConfig{
829829
{
830830
Source: "super",
831+
Target: "/run/secrets/super",
831832
Mode: uint32Ptr(555),
832833
},
833834
},
@@ -1842,6 +1843,7 @@ secrets:
18421843
Secrets: []types.ServiceSecretConfig{
18431844
{
18441845
Source: "secret",
1846+
Target: "/run/secrets/secret",
18451847
},
18461848
},
18471849
},
@@ -1911,6 +1913,7 @@ secrets:
19111913
Secrets: []types.ServiceSecretConfig{
19121914
{
19131915
Source: "secret",
1916+
Target: "/run/secrets/secret",
19141917
},
19151918
},
19161919
},

transform/defaults.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var defaultValues = map[tree.Path]transformFunc{}
2424

2525
func init() {
2626
defaultValues["services.*.build"] = defaultBuildContext
27+
defaultValues["services.*.secrets.*"] = defaultSecretMount
2728
}
2829

2930
// SetDefaultValues transforms a compose model to set default values to missing attributes

transform/secrets.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,16 @@ func transformFileMount(data any, p tree.Path) (any, error) {
3434
return nil, fmt.Errorf("%s: unsupported type %T", p, data)
3535
}
3636
}
37+
38+
func defaultSecretMount(data any, p tree.Path) (any, error) {
39+
switch v := data.(type) {
40+
case map[string]any:
41+
source := v["source"]
42+
if _, ok := v["target"]; !ok {
43+
v["target"] = fmt.Sprintf("/run/secrets/%s", source)
44+
}
45+
return v, nil
46+
default:
47+
return nil, fmt.Errorf("%s: unsupported type %T", p, data)
48+
}
49+
}

0 commit comments

Comments
 (0)