From 80aa03d85e18fa57fa0df6c8e74a4bea6b94c141 Mon Sep 17 00:00:00 2001 From: JDierkse Date: Thu, 4 Aug 2022 21:52:07 +0200 Subject: [PATCH] Improve error handling --- driver.go | 18 ++++++++++-------- iscsi/iscsi.go | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/driver.go b/driver.go index a4044eb..7a1ce69 100644 --- a/driver.go +++ b/driver.go @@ -273,14 +273,16 @@ func (d *iscsiDriver) mountVolume(v *iscsiVolume) error { return err } - // Login to iSCSI Target - err = iSCSI.LoginTarget(v.TargetIQN, v.Host) - if err != nil { - return err - } + if !iSCSI.TargetLoggedIn(v.TargetIQN) { + // Login to iSCSI Target + err = iSCSI.LoginTarget(v.TargetIQN, v.Host) + if err != nil { + return err + } - // Wait for Physical Volume to appear - time.Sleep(500 * time.Millisecond) + // Wait for Physical Volume to appear + time.Sleep(500 * time.Millisecond) + } out := "" errMsg := "" @@ -376,7 +378,7 @@ func (d *iscsiDriver) unmountVolume(v *iscsiVolume) error { } if len(errMsg) > 0 { err := fmt.Errorf("Unable to Unmount Volume: %s", errMsg) - return err + logrus.Info(err) } // Logout from iSCSI Target diff --git a/iscsi/iscsi.go b/iscsi/iscsi.go index ae44075..50b6daa 100644 --- a/iscsi/iscsi.go +++ b/iscsi/iscsi.go @@ -105,6 +105,20 @@ func (plugin *ISCSIPlugin) ListSessions() error { return nil } +func (plugin *ISCSIPlugin) TargetLoggedIn(target string) bool { + + out, errMsg := util.ExecuteCommand("iscsiadm", + "-m", + "session") + + _ = errMsg + + if strings.Contains(out, target) { + return true + } + return false +} + // Login: iscsiadm -m node --login (login on all discovered nodes.) // iscsiadm -m node -T -l -p :3260 func (plugin *ISCSIPlugin) LoginTarget(target string, group string) error {