Bläddra i källkod

Improve error handling

JDierkse 3 år sedan
förälder
incheckning
80aa03d85e
2 ändrade filer med 24 tillägg och 8 borttagningar
  1. 10 8
      driver.go
  2. 14 0
      iscsi/iscsi.go

+ 10 - 8
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

+ 14 - 0
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 <Complete Target Name> -l -p <Group IP>:3260
 func (plugin *ISCSIPlugin) LoginTarget(target string, group string) error {