Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions pkg/admin/prerun/prerun.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,17 @@ func (pr *PreRun) Perform() error {
return nil
}

dataExists, err := util.PathExists(config.DataDir)
dataExists, err := util.PathExistsAndIsNotEmpty(config.DataDir, ".nodename")
if err != nil {
return fmt.Errorf("failed to check if data directory already exists: %w", err)
}

versionExists, err := util.PathExists(versionFilePath)
versionExists, err := util.PathExistsAndIsNotEmpty(versionFilePath)
if err != nil {
return fmt.Errorf("checking if version metadata exists failed: %w", err)
}

healthExists, err := util.PathExists(healthFilepath)
healthExists, err := util.PathExistsAndIsNotEmpty(healthFilepath)
if err != nil {
return fmt.Errorf("failed to check if health file already exists: %w", err)
}
Expand Down Expand Up @@ -363,7 +363,7 @@ func getCurrentBootID() (string, error) {
}

func getHealthInfo() (*HealthInfo, error) {
if exists, err := util.PathExists(healthFilepath); err != nil {
if exists, err := util.PathExistsAndIsNotEmpty(healthFilepath); err != nil {
return nil, err
} else if !exists {
return nil, errHealthFileDoesNotExist
Expand Down
2 changes: 1 addition & 1 deletion pkg/admin/prerun/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func getVersionOfExecutable() (versionMetadata, error) {
}

func getVersionOfData() (versionMetadata, error) {
exists, err := util.PathExists(versionFilePath)
exists, err := util.PathExistsAndIsNotEmpty(versionFilePath)
if err != nil {
return versionMetadata{}, fmt.Errorf("checking if path exists failed: %w", err)
}
Expand Down
32 changes: 32 additions & 0 deletions pkg/util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"os"

"k8s.io/apimachinery/pkg/util/sets"
)

func Must(err error) {
Expand Down Expand Up @@ -32,3 +34,33 @@ func PathExists(path string) (bool, error) {
func MakeDir(path string) error {
return os.MkdirAll(path, 0700)
}

func PathExistsAndIsNotEmpty(path string, ignores ...string) (bool, error) {
fi, err := os.Stat(path)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return false, nil
} else {
return false, fmt.Errorf("checking if path (%s) exists failed: %w", path, err)
}
}

if !fi.IsDir() {
return fi.Size() != 0, nil
}

files, err := os.ReadDir(path)
if err != nil {
return false, fmt.Errorf("failed to ReadDir %q: %w", path, err)
}

iset := sets.New[string](ignores...)
for _, f := range files {
if iset.Has(f.Name()) {
continue
}
return true, nil
}

return false, nil
}