Skip to content

Commit b6bd336

Browse files
committed
Verify FS availability
1 parent d1f366b commit b6bd336

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed

Vagrantfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Vagrant.configure(2) do |config|
22
config.vm.box = "ubuntu/trusty64"
33
config.vm.provision :docker
4-
config.vm.provision "shell", inline: "apt update && apt install -y jq xfsprogs"
4+
config.vm.provision "shell", inline: "apt-get update && apt-get install -y jq xfsprogs"
55
end

main.go

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"os"
5+
"os/exec"
56

67
"github.com/alexflint/go-arg"
78
"github.com/rs/zerolog"
@@ -11,11 +12,8 @@ import (
1112
v "github.com/docker/go-plugins-helpers/volume"
1213
)
1314

14-
const (
15-
socketAddress = "/run/docker/plugins/docker-volume-loopback.sock"
16-
)
17-
1815
type config struct {
16+
Socket string `arg:"--socket,env:SOCKET,help:path to the plugin UNIX socket under /run/docker/plugins/"`
1917
StateDir string `arg:"--state-dir,env:STATE_DIR,help:dir used to keep track of currently mounted volumes"`
2018
DataDir string `arg:"--data-dir,env:DATA_DIR,help:dir used to store actual volume data"`
2119
MountDir string `arg:"--mount-dir,env:MOUNT_DIR,help:dir used to create mount-points"`
@@ -26,6 +24,7 @@ type config struct {
2624
var (
2725
logger = zerolog.New(os.Stdout)
2826
args = &config{
27+
Socket: "/run/docker/plugins/docker-volume-loopback.sock",
2928
StateDir: "/run/docker-volume-loopback",
3029
DataDir: "/var/lib/docker-volume-loopback",
3130
MountDir: "/mnt",
@@ -37,16 +36,35 @@ var (
3736
func main() {
3837
arg.MustParse(args)
3938

39+
if args.Debug {
40+
zerolog.SetGlobalLevel(zerolog.DebugLevel)
41+
}
42+
4043
logger.Info().
41-
Str("socket-address", socketAddress).
44+
Str("socket-address", args.Socket).
4245
Interface("args", args).
4346
Msg("initializing plugin")
4447

45-
if args.Debug {
46-
zerolog.SetGlobalLevel(zerolog.DebugLevel)
48+
_, errXfs := exec.LookPath("mkfs.xfs")
49+
if errXfs != nil {
50+
logger.Warn().
51+
Err(errXfs).
52+
Msg("mkfs.xfs is not available, please install 'xfsprogs' to be able to use xfs filesystem")
53+
}
54+
55+
_, errExt4 := exec.LookPath("mkfs.ext4")
56+
if errExt4 != nil {
57+
logger.Warn().
58+
Err(errExt4).
59+
Msg("mkfs.ext4 is not available, please install 'e2fsprogs' to be able to use ext4 filesystem")
60+
}
61+
if errXfs != nil && errExt4 != nil {
62+
logger.Fatal().
63+
Msg("Neither of supported filesystems (xfs, ext4) are available")
64+
os.Exit(1)
4765
}
4866

49-
d, err := driver.NewDriver(driver.Config{
67+
driverInstance, err := driver.NewDriver(driver.Config{
5068
StateDir: args.StateDir,
5169
DataDir: args.DataDir,
5270
MountDir: args.MountDir,
@@ -55,16 +73,16 @@ func main() {
5573
if err != nil {
5674
logger.Fatal().
5775
Err(err).
58-
Msg("failed to initialize loopback volume driver")
76+
Msg("failed to initialize 'docker-volume-loopback' driver")
5977
os.Exit(1)
6078
}
6179

62-
h := v.NewHandler(d)
63-
err = h.ServeUnix(socketAddress, 0)
80+
handler := v.NewHandler(driverInstance)
81+
err = handler.ServeUnix(args.Socket, 0)
6482
if err != nil {
6583
logger.Fatal().
6684
Err(err).
67-
Str("socket-address", socketAddress).
85+
Str("socket-address", args.Socket).
6886
Msg("failed to server volume plugin api over unix socket")
6987
os.Exit(1)
7088
}

plugin/config.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,16 @@
2828
"Name": "DEFAULT_SIZE",
2929
"Settable": ["value"],
3030
"Value": "1GiB"
31+
},
32+
{
33+
"Description": "Path to the plugin UNIX socket",
34+
"Name": "SOCKET",
35+
"Settable": [],
36+
"Value": "/run/docker/plugins/docker-volume-loop.sock"
3137
}
3238
],
3339
"Interface": {
34-
"Socket": "docker-volume-loopback.sock",
40+
"Socket": "docker-volume-loop.sock",
3541
"Types": ["docker.volumedriver/1.0"]
3642
},
3743
"Linux": {

0 commit comments

Comments
 (0)