Skip to content

Commit

Permalink
Merge pull request #27 from DataDog/isabelle.sauve/close-backend
Browse files Browse the repository at this point in the history
Close backend & check for os-release at /host/etc
  • Loading branch information
ISauve authored Dec 6, 2021
2 parents 7c4951a + 3606d73 commit 3fb3adc
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 9 deletions.
1 change: 1 addition & 0 deletions apt/apt.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type Backend struct {
}

func (b *Backend) Close() {
b.db.Close()
os.RemoveAll(b.tmpDir)
}

Expand Down
9 changes: 4 additions & 5 deletions cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package cmd
import (
"fmt"
"os"
"strings"

"github.com/acobaugh/osrelease"
log "github.com/sirupsen/logrus"
Expand Down Expand Up @@ -109,10 +108,10 @@ var DownloadCmd = &cobra.Command{
func SetupCommands() error {
var err error
target, err = types.NewTarget()
if err != nil && strings.HasPrefix(err.Error(), "failed to read default os-release file") {
log.Warnf("%s: please use the -os-release flag to provide the path to a valid os-release file", err)
target.OSRelease = make(map[string]string)
} else if err != nil {
if len(target.OSRelease) == 0 {
log.Warnf("Unable to parse os-release file: please use the -os-release flag to provide the path to a valid os-release file")
}
if err != nil {
return fmt.Errorf("failed to retrieve target information: %s", err)
}

Expand Down
2 changes: 2 additions & 0 deletions cos/cos.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ func (b *Backend) GetKernelHeaders(directory string) error {
return err
}

func (b *Backend) Close() {}

func NewBackend(target *types.Target, logger types.Logger) (*Backend, error) {
buildID := target.OSRelease["BUILD_ID"]
if buildID == "" {
Expand Down
4 changes: 4 additions & 0 deletions rpm/opensuse.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ func (b *OpenSUSEBackend) GetKernelHeaders(directory string) error {
return b.dnfBackend.GetKernelHeaders(pkgNevra, directory)
}

func (b *OpenSUSEBackend) Close() {
b.dnfBackend.Close()
}

func NewOpenSUSEBackend(target *types.Target, reposDir string, logger types.Logger) (types.Backend, error) {
dnfBackend, err := dnf.NewDnfBackend(target.Distro.Release, reposDir, logger, target)
if err != nil {
Expand Down
4 changes: 4 additions & 0 deletions rpm/sles.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ func (b *SLESBackend) GetKernelHeaders(directory string) error {
return b.dnfBackend.GetKernelHeaders(pkgNevra, directory)
}

func (b *SLESBackend) Close() {
b.dnfBackend.Close()
}

func NewSLESBackend(target *types.Target, reposDir string, logger types.Logger) (types.Backend, error) {
dnfBackend, err := dnf.NewDnfBackend(target.Distro.Release, reposDir, logger, target)
if err != nil {
Expand Down
31 changes: 27 additions & 4 deletions types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (

type Backend interface {
GetKernelHeaders(directory string) error
Close()
}

type Utsname struct {
Expand Down Expand Up @@ -56,17 +57,14 @@ func NewTarget() (Target, error) {

target.Uname.Kernel = string(uname.Release[:bytes.IndexByte(uname.Release[:], 0)])
target.Uname.Machine = string(uname.Machine[:bytes.IndexByte(uname.Machine[:], 0)])
target.OSRelease = getOSRelease()

if isWSL(target.Uname.Kernel) {
target.Distro.Display, target.Distro.Family = "wsl", "wsl"
} else if id := target.OSRelease["ID"]; target.Distro.Display == "" && id != "" {
target.Distro.Display, target.Distro.Family = id, id
}

if target.OSRelease, err = osrelease.Read(); err != nil {
return target, fmt.Errorf("failed to read default os-release file: %s", err)
}

return target, nil
}

Expand All @@ -83,6 +81,31 @@ func isWSL(kernel string) bool {
return false
}

func getOSRelease() map[string]string {
osReleasePaths := []string{
osrelease.EtcOsRelease,
osrelease.UsrLibOsRelease,
}

if hostEtc := os.Getenv("HOST_ETC"); hostEtc != "" {
osReleasePaths = append([]string{
filepath.Join(hostEtc, "os-release"),
}, osReleasePaths...)
}

var (
release map[string]string
err error
)
for _, osReleasePath := range osReleasePaths {
release, err = osrelease.ReadFile(osReleasePath)
if err == nil {
return release
}
}
return make(map[string]string)
}

type Logger interface {
Debug(args ...interface{})
Info(args ...interface{})
Expand Down
2 changes: 2 additions & 0 deletions wsl/wsl.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ func (b *Backend) GetKernelHeaders(directory string) error {
return extract.ExtractTarball(resp.Body, filename, directory, b.logger)
}

func (b *Backend) Close() {}

func NewBackend(target *types.Target, logger types.Logger) (*Backend, error) {
backend := &Backend{
target: target,
Expand Down

0 comments on commit 3fb3adc

Please sign in to comment.