Skip to content

Commit cc60ef2

Browse files
committed
log error in reading os-release
1 parent d771a8c commit cc60ef2

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

cli/docker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ func runDockerCVM(ctx context.Context, log slog.Logger, client dockerutil.Client
526526
// of the user so that we can chown directories to the namespaced UID inside
527527
// the inner container as well as whether we should be starting the container
528528
// with /sbin/init or something simple like 'sleep infinity'.
529-
imgMeta, err := dockerutil.GetImageMetadata(ctx, client, flags.innerImage, flags.innerUsername)
529+
imgMeta, err := dockerutil.GetImageMetadata(ctx, log, client, flags.innerImage, flags.innerUsername)
530530
if err != nil {
531531
return xerrors.Errorf("get image metadata: %w", err)
532532
}

dockerutil/image.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"strings"
1111
"time"
1212

13+
"cdr.dev/slog"
1314
dockertypes "github.com/docker/docker/api/types"
1415
"github.com/docker/docker/api/types/container"
1516
"github.com/docker/docker/api/types/filters"
@@ -180,7 +181,7 @@ type ImageMetadata struct {
180181

181182
// GetImageMetadata returns metadata about an image such as the UID/GID of the
182183
// provided username and whether it contains an /sbin/init that we should run.
183-
func GetImageMetadata(ctx context.Context, client Client, img, username string) (ImageMetadata, error) {
184+
func GetImageMetadata(ctx context.Context, log slog.Logger, client Client, img, username string) (ImageMetadata, error) {
184185
// Creating a dummy container to inspect the filesystem.
185186
created, err := client.ContainerCreate(ctx,
186187
&container.Config{
@@ -258,7 +259,11 @@ func GetImageMetadata(ctx context.Context, client Client, img, username string)
258259
Cmd: "cat",
259260
Args: []string{etcOsRelease},
260261
})
261-
if err == nil {
262+
if err != nil {
263+
log.Error(ctx, "read os-release", slog.Error(err))
264+
log.Error(ctx, "falling back to linux for os-release ID")
265+
osReleaseID = "linux"
266+
} else {
262267
osReleaseID = GetOSReleaseID(out)
263268
}
264269

@@ -274,7 +279,7 @@ func GetImageMetadata(ctx context.Context, client Client, img, username string)
274279
// UsrLibDir returns the path to the /usr/lib directory for the given
275280
// operating system determined by the /etc/os-release file.
276281
func (im ImageMetadata) UsrLibDir() string {
277-
if val, ok := UsrLibDirs[im.OsReleaseID]; ok {
282+
if val, ok := UsrLibDirs[im.OsReleaseID]; ok && val != "" {
278283
return val
279284
}
280285
return UsrLibDirs["linux"] // fallback

0 commit comments

Comments
 (0)