Loading .gitlab-ci.yml 0 → 100644 +30 −0 Original line number Diff line number Diff line image: name: ctrox/csi-s3:test entrypoint: [""] variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 GO_PROJECT_BASE: /go/src/github.com/ctrox GO_PROJECT_DIR: $GO_PROJECT_BASE/csi-s3 stages: - build - test build: stage: build before_script: - mkdir -p $GO_PROJECT_BASE - ln -s $CI_PROJECT_DIR $GO_PROJECT_BASE - cd $GO_PROJECT_DIR script: - make build test: stage: test image: docker:stable services: - docker:dind script: - docker run --rm --privileged -v $(pwd):$GO_PROJECT_DIR --device /dev/fuse ctrox/$CI_PROJECT_NAME:test Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ build: CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/s3driver ./cmd/s3driver test: docker build -t $(TEST_IMAGE_TAG) -f test/Dockerfile . docker run --rm --privileged -v $(PWD):$(PROJECT_DIR):ro -v /dev:/dev $(TEST_IMAGE_TAG) docker run --rm --privileged -v $(PWD):$(PROJECT_DIR):ro --device /dev/fuse $(TEST_IMAGE_TAG) container: build docker build -t $(IMAGE_TAG) -f cmd/s3driver/Dockerfile . push: container Loading pkg/s3/mounter_s3backer.go +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ const ( // blockSize to use in k s3backerBlockSize = "128k" s3backerDefaultSize = 1024 * 1024 * 1024 // 1GiB // S3backerLoopDevice the loop device required by s3backer S3backerLoopDevice = "/dev/loop0" ) func newS3backerMounter(bucket *bucket, cfg *Config) (Mounter, error) { Loading Loading @@ -55,6 +57,10 @@ func (s3backer *s3backerMounter) String() string { } func (s3backer *s3backerMounter) Stage(stageTarget string) error { // s3backer uses the loop device if err := createLoopDevice(S3backerLoopDevice); err != nil { return err } // s3backer requires two mounts // first mount will fuse mount the bucket to a single 'file' if err := s3backer.mountInit(stageTarget); err != nil { Loading pkg/s3/s3-driver_suite_test.go +2 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,8 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } // Clear loop device so we cover the creation of it os.Remove(s3.S3backerLoopDevice) driver, err := s3.NewS3("test-node", csiEndpoint, cfg) if err != nil { log.Fatal(err) Loading pkg/s3/util.go +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "os" "os/exec" "strings" "syscall" "time" Loading Loading @@ -67,3 +68,20 @@ func getCmdLine(pid int) (string, error) { } return string(cmdLine), nil } func createLoopDevice(device string) error { if _, err := os.Stat(device); !os.IsNotExist(err) { return nil } args := []string{ device, "b", "7", "0", } cmd := exec.Command("mknod", args...) out, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("Error configuring loop device: %s", out) } return nil } Loading
.gitlab-ci.yml 0 → 100644 +30 −0 Original line number Diff line number Diff line image: name: ctrox/csi-s3:test entrypoint: [""] variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 GO_PROJECT_BASE: /go/src/github.com/ctrox GO_PROJECT_DIR: $GO_PROJECT_BASE/csi-s3 stages: - build - test build: stage: build before_script: - mkdir -p $GO_PROJECT_BASE - ln -s $CI_PROJECT_DIR $GO_PROJECT_BASE - cd $GO_PROJECT_DIR script: - make build test: stage: test image: docker:stable services: - docker:dind script: - docker run --rm --privileged -v $(pwd):$GO_PROJECT_DIR --device /dev/fuse ctrox/$CI_PROJECT_NAME:test
Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ build: CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/s3driver ./cmd/s3driver test: docker build -t $(TEST_IMAGE_TAG) -f test/Dockerfile . docker run --rm --privileged -v $(PWD):$(PROJECT_DIR):ro -v /dev:/dev $(TEST_IMAGE_TAG) docker run --rm --privileged -v $(PWD):$(PROJECT_DIR):ro --device /dev/fuse $(TEST_IMAGE_TAG) container: build docker build -t $(IMAGE_TAG) -f cmd/s3driver/Dockerfile . push: container Loading
pkg/s3/mounter_s3backer.go +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ const ( // blockSize to use in k s3backerBlockSize = "128k" s3backerDefaultSize = 1024 * 1024 * 1024 // 1GiB // S3backerLoopDevice the loop device required by s3backer S3backerLoopDevice = "/dev/loop0" ) func newS3backerMounter(bucket *bucket, cfg *Config) (Mounter, error) { Loading Loading @@ -55,6 +57,10 @@ func (s3backer *s3backerMounter) String() string { } func (s3backer *s3backerMounter) Stage(stageTarget string) error { // s3backer uses the loop device if err := createLoopDevice(S3backerLoopDevice); err != nil { return err } // s3backer requires two mounts // first mount will fuse mount the bucket to a single 'file' if err := s3backer.mountInit(stageTarget); err != nil { Loading
pkg/s3/s3-driver_suite_test.go +2 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,8 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } // Clear loop device so we cover the creation of it os.Remove(s3.S3backerLoopDevice) driver, err := s3.NewS3("test-node", csiEndpoint, cfg) if err != nil { log.Fatal(err) Loading
pkg/s3/util.go +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "os" "os/exec" "strings" "syscall" "time" Loading Loading @@ -67,3 +68,20 @@ func getCmdLine(pid int) (string, error) { } return string(cmdLine), nil } func createLoopDevice(device string) error { if _, err := os.Stat(device); !os.IsNotExist(err) { return nil } args := []string{ device, "b", "7", "0", } cmd := exec.Command("mknod", args...) out, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("Error configuring loop device: %s", out) } return nil }