Skip to content

Commit d130d84

Browse files
committed
Issue #19
1 parent 3c8ca50 commit d130d84

File tree

26 files changed

+1161
-17
lines changed

26 files changed

+1161
-17
lines changed

.goxc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"ArtifactsDest": "build",
33
"ConfigVersion": "0.9",
4-
"PackageVersion": "0.11",
4+
"PackageVersion": "0.12",
55
"TaskSettings": {
66
"bintray": {
77
"user": "gondor",

.travis.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
language: go
22
go:
3-
- 1.4.2
43
- 1.5.1
54
- tip
65
script:
76
- go test ./...
87
- go build
98
install:
109
- go get github.com/stretchr/testify
11-
- go get -v ./...
10+
- go get -v ./...
11+
env:
12+
- GO15VENDOREXPERIMENT=1

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ FROM golang:1.5
55

66
COPY . /go/src/app
77
WORKDIR /go/src/app
8-
RUN go-wrapper download && go-wrapper install && go build -o docker-volume-netshare
8+
RUN go-wrapper download && go-wrapper install && go build -o docker-volume-netshare && cp docker-volume-netshare /bin

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ sudo mount -t nfs4 1.1.1.1:/mountpoint /target/mount
1818

1919
## Installation
2020

21-
**Latest Version:** 0.10
21+
**Latest Version:** 0.12
2222

2323
#### From Source
2424

@@ -29,9 +29,9 @@ $ go build
2929

3030
#### From Binaries
3131

32-
* Architecture i386 [ [linux](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_linux_386.tar.gz?direct) / [netbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_netbsd_386.zip?direct) / [freebsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_freebsd_386.zip?direct) / [openbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_openbsd_386.zip?direct) ]
33-
* Architecture amd64 [ [linux](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_linux_amd64.tar.gz?direct) / [netbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_netbsd_amd64.zip?direct) / [freebsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_freebsd_amd64.zip?direct) / [openbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_openbsd_amd64.zip?direct) ]
34-
* Debian Package [ [i386](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_i386.deb?direct) ] / [amd64](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_amd64.deb?direct) ] ]
32+
* Architecture i386 [ [linux](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_linux_386.tar.gz?direct) / [netbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_netbsd_386.zip?direct) / [freebsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_freebsd_386.zip?direct) / [openbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_openbsd_386.zip?direct) ]
33+
* Architecture amd64 [ [linux](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_linux_amd64.tar.gz?direct) / [netbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_netbsd_amd64.zip?direct) / [freebsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_freebsd_amd64.zip?direct) / [openbsd](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_openbsd_amd64.zip?direct) ]
34+
* Debian Package [ [i386](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_i386.deb?direct) ] / [amd64](https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_amd64.deb?direct) ] ]
3535

3636
#### On Ubuntu / Debian
3737

@@ -40,8 +40,8 @@ The method below will install the sysvinit and /etc/default options that can be
4040
1. Install the Package
4141

4242
```
43-
$ wget https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.11_i386.deb
44-
$ sudo dpkg -i docker-volume-netshare_0.11_i386.deb
43+
$ wget https://dl.bintray.com//content/pacesys/docker/docker-volume-netshare_0.12_i386.deb
44+
$ sudo dpkg -i docker-volume-netshare_0.12_i386.deb
4545
```
4646

4747
2. Modify the startup options in `/etc/default/docker-volume-netshare`

netshare/drivers/efs.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (e efsDriver) Mount(r volume.Request) volume.Response {
9797
return volume.Response{Err: err.Error()}
9898
}
9999

100-
if err := mountVolume(source, dest, 4); err != nil {
100+
if err := e.mountVolume(source, dest); err != nil {
101101
return volume.Response{Err: err.Error()}
102102
}
103103
e.mountm.Add(dest, r.Name)
@@ -157,3 +157,9 @@ func (e efsDriver) fixSource(name string) string {
157157
func mountSuffix(uri string) string {
158158
return uri + ":/"
159159
}
160+
161+
func (e efsDriver) mountVolume(source, dest string) error {
162+
cmd := fmt.Sprintf("mount -t nfs4 %s %s", source, dest)
163+
log.Debugf("exec: %s\n", cmd)
164+
return run(cmd)
165+
}

netshare/drivers/nfs.go

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,34 @@ import (
99
"sync"
1010
)
1111

12+
const (
13+
NfsOptions = "nfsopts"
14+
DefaultNfsV3 = "port=2049,nolock,proto=tcp"
15+
)
16+
1217
type nfsDriver struct {
1318
root string
1419
version int
1520
mountm *mountManager
1621
m *sync.Mutex
22+
opts map[string]string
1723
}
1824

19-
func NewNFSDriver(root string, version int) nfsDriver {
25+
var (
26+
EmptyMap = map[string]string{}
27+
)
28+
29+
30+
func NewNFSDriver(root string, version int, options string) nfsDriver {
2031
d := nfsDriver{
2132
root: root,
2233
version: version,
2334
mountm: NewVolumeManager(),
2435
m: &sync.Mutex{},
36+
opts: map[string]string{},
37+
}
38+
if len(options) > 0 {
39+
d.opts[NfsOptions] = options
2540
}
2641
return d
2742
}
@@ -74,7 +89,7 @@ func (n nfsDriver) Mount(r volume.Request) volume.Response {
7489
return volume.Response{Err: err.Error()}
7590
}
7691

77-
if err := mountVolume(source, dest, n.version); err != nil {
92+
if err := n.mountVolume(source, dest, n.version); err != nil {
7893
return volume.Response{Err: err.Error()}
7994
}
8095
n.mountm.Add(dest, r.Name)
@@ -115,14 +130,42 @@ func (n nfsDriver) fixSource(name string) string {
115130
return strings.Join(source, "/")
116131
}
117132

118-
func mountVolume(source, dest string, version int) error {
133+
func (n nfsDriver) mountVolume(source, dest string, version int) error {
119134
var cmd string
135+
136+
options := n.mountOptions(n.mountm.GetOptions(dest))
137+
opts := ""
138+
if val, ok := options[NfsOptions]; ok {
139+
opts = val
140+
}
120141
switch version {
121142
case 3:
122-
cmd = fmt.Sprintf("mount -o port=2049,nolock,proto=tcp %s %s", source, dest)
143+
if len(opts) < 1 {
144+
opts = DefaultNfsV3
145+
}
146+
cmd = fmt.Sprintf("mount -o %s %s %s", opts, source, dest)
123147
default:
124-
cmd = fmt.Sprintf("mount -t nfs4 %s %s", source, dest)
148+
if len(opts) > 0 {
149+
cmd = fmt.Sprintf("mount -t nfs4 -o %s %s %s", opts, source, dest)
150+
} else {
151+
cmd = fmt.Sprintf("mount -t nfs4 %s %s", source, dest)
152+
}
125153
}
126154
log.Debugf("exec: %s\n", cmd)
127155
return run(cmd)
128156
}
157+
158+
func (n nfsDriver) mountOptions(src map[string]string) map[string]string {
159+
if (len(n.opts) == 0 && len(src) == 0) {
160+
return EmptyMap
161+
}
162+
163+
dst := map[string]string {}
164+
for k, v := range n.opts {
165+
dst[k] = v
166+
}
167+
for k, v := range src {
168+
dst[k] = v
169+
}
170+
return dst
171+
}

netshare/netshare.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const (
1717
DomainFlag = "domain"
1818
SecurityFlag = "security"
1919
VersionFlag = "version"
20+
OptionsFlag = "options"
2021
BasedirFlag = "basedir"
2122
VerboseFlag = "verbose"
2223
AvailZoneFlag = "az"
@@ -88,6 +89,7 @@ func setupFlags() {
8889
cifsCmd.Flags().StringP(NetRCFlag, "", os.Getenv("HOME"), "The default .netrc location. Default is the user.home directory")
8990

9091
nfsCmd.Flags().IntP(VersionFlag, "v", 4, "NFS Version to use [3 | 4]. Can also be set with NETSHARE_NFS_VERSION")
92+
nfsCmd.Flags().StringP(OptionsFlag, "o", "", fmt.Sprintf("Options passed to nfs mounts (ex: %s)", drivers.DefaultNfsV3))
9193

9294
efsCmd.Flags().String(AvailZoneFlag, "", "AWS Availability zone [default: \"\", looks up via metadata]")
9395
efsCmd.Flags().String(NameServerFlag, "", "Custom DNS nameserver. [default \"\", uses /etc/resolv.conf]")
@@ -111,7 +113,8 @@ func execNFS(cmd *cobra.Command, args []string) {
111113
}
112114
}
113115
}
114-
d := drivers.NewNFSDriver(rootForType(drivers.NFS), version)
116+
options, _ := cmd.Flags().GetString(OptionsFlag)
117+
d := drivers.NewNFSDriver(rootForType(drivers.NFS), version, options)
115118
start(drivers.NFS, d)
116119
}
117120

vendor/github.com/docker/go-connections/LICENSE

Lines changed: 191 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/docker/go-connections/sockets/README.md

Whitespace-only changes.

0 commit comments

Comments
 (0)