Add /mnt link to mounts
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
// Vendors
|
||||
"iscsi"
|
||||
"util"
|
||||
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/docker/go-plugins-helpers/volume"
|
||||
)
|
||||
@@ -21,7 +22,7 @@ import (
|
||||
var iSCSI iscsi.ISCSIPlugin
|
||||
|
||||
type iscsiVolume struct {
|
||||
Host string
|
||||
Host string
|
||||
TargetIQN string
|
||||
|
||||
Options []string
|
||||
@@ -269,6 +270,7 @@ func (d *iscsiDriver) Capabilities() *volume.CapabilitiesResponse {
|
||||
// Local Functions
|
||||
func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
|
||||
// Discover iSCSI LUNs
|
||||
logrus.Debugf("Discovering %s", v.Host)
|
||||
err := iSCSI.DiscoverLUNs(v.Host)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -276,6 +278,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
|
||||
|
||||
if !iSCSI.TargetLoggedIn(v.TargetIQN) {
|
||||
// Login to iSCSI Target
|
||||
logrus.Debugf("Logging in %s", v.TargetIQN)
|
||||
err = iSCSI.LoginTarget(v.TargetIQN, v.Host)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -318,6 +321,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
|
||||
device := strings.TrimSuffix(out, "\n")
|
||||
|
||||
// FSCK
|
||||
logrus.Debugf("Checking %s", device)
|
||||
cmd = "e2fsck -p " + device
|
||||
out, errMsg = util.ExecuteCommandString(cmd)
|
||||
|
||||
@@ -330,6 +334,7 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
|
||||
}
|
||||
|
||||
// Mount
|
||||
logrus.Debugf("Mounting %s", device)
|
||||
cmd = "mount -o discard " + device + " " + v.Mountpoint
|
||||
out, errMsg = util.ExecuteCommandString(cmd)
|
||||
|
||||
@@ -341,14 +346,47 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Get MountPoint
|
||||
cmd = "chroot /host docker plugin ls --no-trunc | grep volume-iscsi | awk '{print $1;}' | tr -d '\n'"
|
||||
out, errMsg = util.ExecuteCommandString(cmd)
|
||||
mountPath := "/opt/docker/system/docker/plugins/" + out + "/propagated-mount/"
|
||||
mountPoint := strings.Replace(v.Mountpoint, "/var/lib/docker/volumes/", mountPath, -1)
|
||||
|
||||
// Link
|
||||
logrus.Debugf("Linking %s", v.TargetIQN)
|
||||
cmd = "ln -s " + mountPoint + " /host/mnt/iSCSI_" + v.TargetIQN
|
||||
out, errMsg = util.ExecuteCommandString(cmd)
|
||||
|
||||
if len(out) > 0 {
|
||||
logrus.Debug(out)
|
||||
}
|
||||
if len(errMsg) > 0 {
|
||||
err := fmt.Errorf("Unable to Link to Mounted Volume: %s", errMsg)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error {
|
||||
// Unmount
|
||||
cmd := "umount " + v.Mountpoint
|
||||
// Unlink
|
||||
logrus.Debugf("Unlinking %s", v.TargetIQN)
|
||||
cmd := "rm -f /host/mnt/iSCSI_" + v.TargetIQN
|
||||
out, errMsg := util.ExecuteCommandString(cmd)
|
||||
|
||||
if len(out) > 0 {
|
||||
logrus.Debug(out)
|
||||
}
|
||||
if len(errMsg) > 0 {
|
||||
err := fmt.Errorf("Unable to Remove Link: %s", errMsg)
|
||||
logrus.Info(err)
|
||||
}
|
||||
|
||||
// Unmount
|
||||
logrus.Debugf("Unmounting %s", v.Mountpoint)
|
||||
cmd = "umount " + v.Mountpoint
|
||||
out, errMsg = util.ExecuteCommandString(cmd)
|
||||
|
||||
if len(out) > 0 {
|
||||
logrus.Debug(out)
|
||||
}
|
||||
@@ -359,6 +397,7 @@ func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error {
|
||||
|
||||
if iSCSI.TargetLoggedIn(v.TargetIQN) {
|
||||
// Logout from iSCSI Target
|
||||
logrus.Debugf("Logging out %s", v.TargetIQN)
|
||||
err := iSCSI.LogoutTarget(v.TargetIQN, v.Host)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -380,4 +419,3 @@ func (d *iscsiDriver) saveState() {
|
||||
logrus.WithField("savestate", d.statePath).Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user