Skip to content

Commit 5c0c63d

Browse files
committed
Enforce soft failure when mtls data not available
The mtls data storage is largely a convenience feature which enables things such as mime handling. This change ensures that a profile can still be started regardless of it. Signed-off-by: Paulo Gomes <[email protected]>
1 parent a8dd44b commit 5c0c63d

File tree

2 files changed

+31
-19
lines changed

2 files changed

+31
-19
lines changed

internal/profiles/profiles.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ func createNewDisplay(bin string, ca, cert, key []byte, profile *types.Profile,
688688

689689
err = storeMtlsData(profile.Name, string(ca), string(cert), string(key))
690690
if err != nil {
691-
return err
691+
slog.Error("failed storing mtls data", "error", err)
692692
}
693693

694694
output, err := cmd.CombinedOutput()

internal/runners/docker/run.go

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -272,27 +272,16 @@ func Run(ew types.EffectiveWorkload) error {
272272
// Since the implementation of mTLS, workloads granted mime handling
273273
// need the mTLS creds so that they can communicate with the inception
274274
// server.
275-
ks := keyring.New(ew.Profile.Name, backend.New())
276-
ca, err := ks.Get(keyring.MtlsCA)
277-
if err != nil {
278-
return err
279-
}
280275

281-
cert, err := ks.Get(keyring.MtlsClientCert)
282-
if err != nil {
283-
return err
284-
}
276+
if ca, cert, key, ok := mtlsData(ew.Profile.Name); ok {
277+
slog.Debug("mime access: enabled")
285278

286-
key, err := ks.Get(keyring.MtlsClientKey)
287-
if err != nil {
288-
return err
279+
cmd.Env = append(os.Environ(), "Q_MTLS_CA="+ca)
280+
cmd.Env = append(cmd.Env, "Q_MTLS_CERT="+cert)
281+
cmd.Env = append(cmd.Env, "Q_MTLS_KEY="+key)
282+
} else {
283+
slog.Debug("mime access: skipped")
289284
}
290-
291-
slog.Debug("enabling mime access")
292-
293-
cmd.Env = append(os.Environ(), "Q_MTLS_CA="+ca)
294-
cmd.Env = append(cmd.Env, "Q_MTLS_CERT="+cert)
295-
cmd.Env = append(cmd.Env, "Q_MTLS_KEY="+key)
296285
}
297286

298287
cmd.Stderr = os.Stderr
@@ -302,6 +291,29 @@ func Run(ew types.EffectiveWorkload) error {
302291
return cmd.Run()
303292
}
304293

294+
func mtlsData(name string) (string, string, string, bool) {
295+
ks := keyring.New(name, backend.New())
296+
ca, err := ks.Get(keyring.MtlsCA)
297+
if err != nil {
298+
slog.Error("failed to fetch mtls-ca", "error", err)
299+
return "", "", "", false
300+
}
301+
302+
cert, err := ks.Get(keyring.MtlsClientCert)
303+
if err != nil {
304+
slog.Error("failed to fetch mtls-client-cert", "error", err)
305+
return "", "", "", false
306+
}
307+
308+
key, err := ks.Get(keyring.MtlsClientKey)
309+
if err != nil {
310+
slog.Error("failed to fetch mtls-client-key", "error", err)
311+
return "", "", "", false
312+
}
313+
314+
return ca, cert, key, true
315+
}
316+
305317
func getHomeDir(image string) (string, error) {
306318
args := []string{"run", "--rm", image, "ls", "/home"}
307319

0 commit comments

Comments
 (0)