Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

all: use Layer.FS method #1105

Merged
merged 15 commits into from
Oct 24, 2023
10 changes: 2 additions & 8 deletions alpine/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/osrelease"
"github.com/quay/claircore/pkg/tarfs"
)

// Alpine linux has patch releases but their security database
Expand Down Expand Up @@ -69,14 +68,9 @@ func (s *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]*
"layer", l.Hash.String())
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")
rc, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, err
}
defer rc.Close()
sys, err := tarfs.New(rc)
if err != nil {
return nil, err
return nil, fmt.Errorf("alpine: unable to open layer: %w", err)
}
return s.scanFs(ctx, sys)
}
Expand Down
10 changes: 3 additions & 7 deletions apk/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import (
"bytes"
"context"
"errors"
"fmt"
"io/fs"
"runtime/trace"

"github.com/quay/zlog"

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -59,13 +59,9 @@ func (*Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*claircore.
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rc, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
sys, err := tarfs.New(rc)
if err != nil {
return nil, err
return nil, fmt.Errorf("apk: unable to open layer: %w", err)
}
b, err := fs.ReadFile(sys, installedFile)
switch {
Expand Down
8 changes: 1 addition & 7 deletions debian/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/osrelease"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -47,12 +46,7 @@ func (ds *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("debian: unable to open layer: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("debian: unable to open layer: %w", err)
}
Expand Down
12 changes: 3 additions & 9 deletions dpkg/distroless_scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -63,14 +62,9 @@ func (ps *DistrolessScanner) Scan(ctx context.Context, layer *claircore.Layer) (
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
return nil, fmt.Errorf("dpkg-distroless: opening layer failed: %w", err)
}

var pkgs []*claircore.Package
Expand All @@ -80,7 +74,7 @@ func (ps *DistrolessScanner) Scan(ctx context.Context, layer *claircore.Layer) (
}
if d.Name() == "status.d" && d.IsDir() {
zlog.Debug(ctx).Str("path", p).Msg("found potential distroless dpkg db directory")
dbFiles, err := sys.ReadDir(p)
dbFiles, err := fs.ReadDir(sys, p)
if err != nil {
return fmt.Errorf("error reading DB directory: %w", err)
}
Expand Down
13 changes: 2 additions & 11 deletions dpkg/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -67,17 +66,9 @@ func (ps *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*clairco
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

// Grab a handle to the tarball, make sure we can seek.
// If we can't, we'd need another reader for every database found.
// It's cleaner to just demand that it's a seeker.
rd, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
return nil, fmt.Errorf("dpkg: opening layer failed: %w", err)
}

// This is a map keyed by directory. A "score" of 2 means this is almost
Expand Down
10 changes: 2 additions & 8 deletions gobin/gobin.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

// Detector detects go binaries and reports the packages used to build them.
Expand Down Expand Up @@ -74,14 +73,9 @@ func (Detector) Scan(ctx context.Context, l *claircore.Layer) ([]*claircore.Pack
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, err
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, err
return nil, fmt.Errorf("gobin: unable to open layer: %w", err)
}

var out []*claircore.Package
Expand Down
11 changes: 2 additions & 9 deletions java/packagescanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/java/jar"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -116,15 +115,9 @@ func (s *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*claircor
if err := ctx.Err(); err != nil {
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, err
return nil, fmt.Errorf("java: unable to open layer: %w", err)
}

ars, err := archives(ctx, sys)
Expand Down
19 changes: 3 additions & 16 deletions java/reposcanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,13 @@ package java

import (
"context"
"errors"
"fmt"
"io"
"runtime/trace"

"github.com/quay/zlog"

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -53,21 +50,11 @@ func (rs *RepoScanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*cla
if err := ctx.Err(); err != nil {
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
ra, ok := r.(io.ReaderAt)
if !ok {
err := errors.New("unable to coerce to io.ReaderAt")
return nil, fmt.Errorf("opening layer failed: %w", err)
}
sys, err := tarfs.New(ra)
if err != nil {
return nil, err
return nil, fmt.Errorf("java: unable to open layer: %w", err)
}

ars, err := archives(ctx, sys)
if err != nil {
return nil, err
Expand Down
8 changes: 1 addition & 7 deletions osrelease/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/cpe"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -65,12 +64,7 @@ func (s *Scanner) Scan(ctx context.Context, l *claircore.Layer) ([]*claircore.Di
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

r, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("osrelease: unable to open layer: %w", err)
}
defer r.Close()
sys, err := tarfs.New(r)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("osrelease: unable to open layer: %w", err)
}
Expand Down
10 changes: 2 additions & 8 deletions python/packagescanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/pep440"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -64,14 +63,9 @@ func (ps *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*clairco
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, fmt.Errorf("python: unable to open tar: %w", err)
return nil, fmt.Errorf("python: unable to open layer: %w", err)
}

ms, err := findDeliciousEgg(ctx, sys)
Expand Down
10 changes: 2 additions & 8 deletions python/reposcanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -52,14 +51,9 @@ func (rs *RepoScanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*cla
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, fmt.Errorf("python: unable to open tar: %w", err)
return nil, fmt.Errorf("python: unable to open layer: %w", err)
}

ms, err := findDeliciousEgg(ctx, sys)
Expand Down
10 changes: 2 additions & 8 deletions rhel/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -47,14 +46,9 @@ func (ds *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]
"layer", l.Hash.String())
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")
rd, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("rhel: unable to create layer reader: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("rhel: unable to open tarfs: %w", err)
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
d, err := findDistribution(sys)
if err != nil {
Expand Down
8 changes: 1 addition & 7 deletions rhel/repositoryscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
"github.com/quay/claircore/rhel/dockerfile"
"github.com/quay/claircore/rhel/internal/common"
"github.com/quay/claircore/rhel/internal/containerapi"
Expand Down Expand Up @@ -178,12 +177,7 @@ func (r *RepositoryScanner) Scan(ctx context.Context, l *claircore.Layer) (repos
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
Expand Down
Loading