Commit 7a1ac6c6 authored by Humble Chirammal's avatar Humble Chirammal

Adjust nodiskconflict support based on iscsi multipath feature.

parent a57967f4
...@@ -21,7 +21,6 @@ import ( ...@@ -21,7 +21,6 @@ import (
"fmt" "fmt"
"math/rand" "math/rand"
"strconv" "strconv"
"strings"
"sync" "sync"
"time" "time"
...@@ -131,21 +130,12 @@ func isVolumeConflict(volume v1.Volume, pod *v1.Pod) bool { ...@@ -131,21 +130,12 @@ func isVolumeConflict(volume v1.Volume, pod *v1.Pod) bool {
} }
if volume.ISCSI != nil && existingVolume.ISCSI != nil { if volume.ISCSI != nil && existingVolume.ISCSI != nil {
iqn, lun, target := volume.ISCSI.IQN, volume.ISCSI.Lun, volume.ISCSI.TargetPortal iqn := volume.ISCSI.IQN
eiqn, elun, etarget := existingVolume.ISCSI.IQN, existingVolume.ISCSI.Lun, existingVolume.ISCSI.TargetPortal eiqn := existingVolume.ISCSI.IQN
if !strings.Contains(target, ":") { // two ISCSI volumes are same, if they share the same iqn. As iscsi volumes are of type
target = target + ":3260"
}
if !strings.Contains(etarget, ":") {
etarget = etarget + ":3260"
}
lun1 := strconv.Itoa(int(lun))
elun1 := strconv.Itoa(int(elun))
// two ISCSI volumes are same, if they share the same iqn, lun and target. As iscsi volumes are of type
// RWO or ROX, we could permit only one RW mount. Same iscsi volume mounted by multiple Pods // RWO or ROX, we could permit only one RW mount. Same iscsi volume mounted by multiple Pods
// conflict unless all other pods mount as read only. // conflict unless all other pods mount as read only.
if iqn == eiqn && lun1 == elun1 && target == etarget && !(volume.ISCSI.ReadOnly && existingVolume.ISCSI.ReadOnly) { if iqn == eiqn && !(volume.ISCSI.ReadOnly && existingVolume.ISCSI.ReadOnly) {
return true return true
} }
} }
......
...@@ -739,7 +739,7 @@ func TestISCSIDiskConflicts(t *testing.T) { ...@@ -739,7 +739,7 @@ func TestISCSIDiskConflicts(t *testing.T) {
VolumeSource: v1.VolumeSource{ VolumeSource: v1.VolumeSource{
ISCSI: &v1.ISCSIVolumeSource{ ISCSI: &v1.ISCSIVolumeSource{
TargetPortal: "127.0.0.1:3260", TargetPortal: "127.0.0.1:3260",
IQN: "iqn.2014-12.server:storage.target01", IQN: "iqn.2016-12.server:storage.target01",
FSType: "ext4", FSType: "ext4",
Lun: 0, Lun: 0,
}, },
...@@ -752,10 +752,10 @@ func TestISCSIDiskConflicts(t *testing.T) { ...@@ -752,10 +752,10 @@ func TestISCSIDiskConflicts(t *testing.T) {
{ {
VolumeSource: v1.VolumeSource{ VolumeSource: v1.VolumeSource{
ISCSI: &v1.ISCSIVolumeSource{ ISCSI: &v1.ISCSIVolumeSource{
TargetPortal: "127.0.0.2:3260", TargetPortal: "127.0.0.1:3260",
IQN: "iqn.2014-12.server:storage.target01", IQN: "iqn.2017-12.server:storage.target01",
FSType: "ext4", FSType: "ext4",
Lun: 1, Lun: 0,
}, },
}, },
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment