Merge pull request #237 from Random-Liu/create-host-path

Create host path is mount source does not exist.
This commit is contained in:
Lantao Liu 2017-09-11 22:29:21 -07:00 committed by GitHub
commit 4ee0f964ee
2 changed files with 32 additions and 9 deletions

View File

@ -62,20 +62,34 @@ fi
# For multiple GOPATHs, keep the first one only
GOPATH=${GOPATH%%:*}
# checkout_repo checks out specified repository
# and switch to specified version.
# Varset:
# 1) Repo name;
# 2) Version.
checkout_repo() {
repo=$1
version=$2
path="${GOPATH}/src/${repo}"
if [ ! -d ${path} ]; then
mkdir -p ${path}
git clone https://${repo} ${path}
fi
cd ${path}
git fetch --all
git checkout ${version}
}
# Install runc
go get -d ${RUNC_PKG}/...
checkout_repo ${RUNC_PKG} ${RUNC_VERSION}
cd ${GOPATH}/src/${RUNC_PKG}
git fetch --all
git checkout ${RUNC_VERSION}
BUILDTAGS=${BUILDTAGS:-seccomp apparmor}
make BUILDTAGS="$BUILDTAGS"
${sudo} make install -e DESTDIR=${RUNC_DIR}
# Install cni
go get -d ${CNI_PKG}/...
checkout_repo ${CNI_PKG} ${CNI_VERSION}
cd ${GOPATH}/src/${CNI_PKG}
git fetch --all
git checkout ${CNI_VERSION}
./build.sh
${sudo} mkdir -p ${CNI_DIR}
${sudo} cp -r ./bin ${CNI_DIR}
@ -107,9 +121,7 @@ ${sudo} bash -c 'cat >'${CNI_CONFIG_DIR}'/10-containerd-net.conflist <<EOF
EOF'
# Install containerd
go get -d ${CONTAINERD_PKG}/...
checkout_repo ${CONTAINERD_PKG} ${CONTAINERD_VERSION}
cd ${GOPATH}/src/${CONTAINERD_PKG}
git fetch --all
git checkout ${CONTAINERD_VERSION}
make
${sudo} make install -e DESTDIR=${CONTAINERD_DIR}

View File

@ -18,6 +18,7 @@ package server
import (
"fmt"
"os"
"strings"
"time"
@ -484,6 +485,16 @@ func addOCIBindMounts(g *generate.Generator, mounts []*runtime.Mount, mountLabel
for _, mount := range mounts {
dst := mount.GetContainerPath()
src := mount.GetHostPath()
// Create the host path if it doesn't exist.
// TODO(random-liu): Add CRI validation test for this case.
if _, err := os.Stat(src); err != nil {
if !os.IsNotExist(err) {
return fmt.Errorf("failed to stat %q: %v", src, err)
}
if err := os.MkdirAll(src, 0755); err != nil {
return fmt.Errorf("failed to mkdir %q: %v", src, err)
}
}
options := []string{"rbind"}
switch mount.GetPropagation() {
case runtime.MountPropagation_PROPAGATION_PRIVATE: