mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Adjust nodiskconflict support based on iscsi multipath feature.
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
This commit is contained in:
parent
a57967f47b
commit
7a1ac6c6db
@ -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 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
|||||||
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) {
|
|||||||
{
|
{
|
||||||
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,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user