Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
katautils: update paths to be configurable for rootless execution
Browse files Browse the repository at this point in the history
Before using the default ctrsMapTrePath, check whether the runtime
is being ran rootlessly, and if so set the ctrsMapTreePath to the
rootlessRuntimeDir configured by the libpod rootless library.

Fixes: #1827

Signed-off-by: Gabi Beyer <gabrielle.n.beyer@intel.com>
  • Loading branch information
Gabi Beyer authored and marcov committed Sep 26, 2019
1 parent 2d8b278 commit cdd6f7e
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions pkg/katautils/oci.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ import (
"io/ioutil"
"os"
"path/filepath"
"strings"

"github.com/kata-containers/runtime/pkg/rootless"
)

const ctrsMappingDirMode = os.FileMode(0750)
Expand All @@ -22,6 +25,11 @@ func SetCtrsMapTreePath(path string) {
ctrsMapTreePath = path
}

// doUpdatePath returns whether a ctrsMapTreePath needs to be updated with a rootless prefix
func doUpdatePath() bool {
return rootless.IsRootless() && !strings.HasPrefix(ctrsMapTreePath, rootless.GetRootlessDir())
}

// FetchContainerIDMapping This function assumes it should find only one file inside the container
// ID directory. If there are several files, we could not determine which
// file name corresponds to the sandbox ID associated, and this would throw
Expand All @@ -31,6 +39,10 @@ func FetchContainerIDMapping(containerID string) (string, error) {
return "", fmt.Errorf("Missing container ID")
}

if doUpdatePath() {
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
}

dirPath := filepath.Join(ctrsMapTreePath, containerID)

files, err := ioutil.ReadDir(dirPath)
Expand Down Expand Up @@ -62,6 +74,9 @@ func AddContainerIDMapping(ctx context.Context, containerID, sandboxID string) e
return fmt.Errorf("Missing sandbox ID")
}

if doUpdatePath() {
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
}
parentPath := filepath.Join(ctrsMapTreePath, containerID)

if err := os.RemoveAll(parentPath); err != nil {
Expand All @@ -86,6 +101,9 @@ func DelContainerIDMapping(ctx context.Context, containerID string) error {
return fmt.Errorf("Missing container ID")
}

if doUpdatePath() {
SetCtrsMapTreePath(filepath.Join(rootless.GetRootlessDir(), ctrsMapTreePath))
}
path := filepath.Join(ctrsMapTreePath, containerID)

return os.RemoveAll(path)
Expand Down

0 comments on commit cdd6f7e

Please sign in to comment.