|
|
|
@@ -442,11 +442,47 @@ func Test_Run_Positive_VolumeAttachAndMap(t *testing.T) {
|
|
|
|
|
// Enable BlockVolume feature gate
|
|
|
|
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.BlockVolume, true)()
|
|
|
|
|
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
Namespace: "ns",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
ClaimRef: &v1.ObjectReference{Namespace: "ns", Name: "pvc-volume-name"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gcepvc := &v1.PersistentVolumeClaim{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "pvc-001", Name: "pvc-volume-name", Namespace: "ns"},
|
|
|
|
|
Spec: v1.PersistentVolumeClaimSpec{
|
|
|
|
|
VolumeName: "volume-name",
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
Status: v1.PersistentVolumeClaimStatus{
|
|
|
|
|
Phase: v1.ClaimBound,
|
|
|
|
|
Capacity: gcepv.Spec.Capacity,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
volumePluginMgr, fakePlugin := volumetesting.GetTestVolumePluginMgr(t)
|
|
|
|
|
dsw := cache.NewDesiredStateOfWorld(volumePluginMgr)
|
|
|
|
|
asw := cache.NewActualStateOfWorld(nodeName, volumePluginMgr)
|
|
|
|
|
kubeClient := createTestClient()
|
|
|
|
|
kubeClient := createtestClientWithPVPVC(gcepv, gcepvc)
|
|
|
|
|
fakeRecorder := &record.FakeRecorder{}
|
|
|
|
|
fakeHandler := volumetesting.NewBlockVolumePathHandler()
|
|
|
|
|
oex := operationexecutor.NewOperationExecutor(operationexecutor.NewOperationGenerator(
|
|
|
|
@@ -469,27 +505,6 @@ func Test_Run_Positive_VolumeAttachAndMap(t *testing.T) {
|
|
|
|
|
&mount.FakeHostUtil{},
|
|
|
|
|
volumePluginMgr,
|
|
|
|
|
kubeletPodsDir)
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
@@ -527,11 +542,53 @@ func Test_Run_Positive_BlockVolumeMapControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
// Enable BlockVolume feature gate
|
|
|
|
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.BlockVolume, true)()
|
|
|
|
|
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
Namespace: "ns",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
ClaimRef: &v1.ObjectReference{Namespace: "ns", Name: "pvc-volume-name"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
gcepvc := &v1.PersistentVolumeClaim{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "pvc-001", Name: "pvc-volume-name", Namespace: "ns"},
|
|
|
|
|
Spec: v1.PersistentVolumeClaimSpec{
|
|
|
|
|
VolumeName: "volume-name",
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
Status: v1.PersistentVolumeClaimStatus{
|
|
|
|
|
Phase: v1.ClaimBound,
|
|
|
|
|
Capacity: gcepv.Spec.Capacity,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
volumePluginMgr, fakePlugin := volumetesting.GetTestVolumePluginMgr(t)
|
|
|
|
|
dsw := cache.NewDesiredStateOfWorld(volumePluginMgr)
|
|
|
|
|
asw := cache.NewActualStateOfWorld(nodeName, volumePluginMgr)
|
|
|
|
|
kubeClient := createTestClient()
|
|
|
|
|
kubeClient := createtestClientWithPVPVC(gcepv, gcepvc, v1.AttachedVolume{
|
|
|
|
|
Name: "fake-plugin/fake-device1",
|
|
|
|
|
DevicePath: "/fake/path",
|
|
|
|
|
})
|
|
|
|
|
fakeRecorder := &record.FakeRecorder{}
|
|
|
|
|
fakeHandler := volumetesting.NewBlockVolumePathHandler()
|
|
|
|
|
oex := operationexecutor.NewOperationExecutor(operationexecutor.NewOperationGenerator(
|
|
|
|
@@ -554,31 +611,7 @@ func Test_Run_Positive_BlockVolumeMapControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
&mount.FakeHostUtil{},
|
|
|
|
|
volumePluginMgr,
|
|
|
|
|
kubeletPodsDir)
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
podName := util.GetUniquePodName(pod)
|
|
|
|
|
generatedVolumeName, err := dsw.AddPodToVolume(
|
|
|
|
|
podName, pod, volumeSpec, volumeSpec.Name(), "" /* volumeGidValue */)
|
|
|
|
@@ -613,11 +646,50 @@ func Test_Run_Positive_BlockVolumeAttachMapUnmapDetach(t *testing.T) {
|
|
|
|
|
// Enable BlockVolume feature gate
|
|
|
|
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.BlockVolume, true)()
|
|
|
|
|
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
Namespace: "ns",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
ClaimRef: &v1.ObjectReference{Namespace: "ns", Name: "pvc-volume-name"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
gcepvc := &v1.PersistentVolumeClaim{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "pvc-001", Name: "pvc-volume-name", Namespace: "ns"},
|
|
|
|
|
Spec: v1.PersistentVolumeClaimSpec{
|
|
|
|
|
VolumeName: "volume-name",
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
Status: v1.PersistentVolumeClaimStatus{
|
|
|
|
|
Phase: v1.ClaimBound,
|
|
|
|
|
Capacity: gcepv.Spec.Capacity,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
volumePluginMgr, fakePlugin := volumetesting.GetTestVolumePluginMgr(t)
|
|
|
|
|
dsw := cache.NewDesiredStateOfWorld(volumePluginMgr)
|
|
|
|
|
asw := cache.NewActualStateOfWorld(nodeName, volumePluginMgr)
|
|
|
|
|
kubeClient := createTestClient()
|
|
|
|
|
kubeClient := createtestClientWithPVPVC(gcepv, gcepvc)
|
|
|
|
|
fakeRecorder := &record.FakeRecorder{}
|
|
|
|
|
fakeHandler := volumetesting.NewBlockVolumePathHandler()
|
|
|
|
|
oex := operationexecutor.NewOperationExecutor(operationexecutor.NewOperationGenerator(
|
|
|
|
@@ -640,31 +712,7 @@ func Test_Run_Positive_BlockVolumeAttachMapUnmapDetach(t *testing.T) {
|
|
|
|
|
&mount.FakeHostUtil{},
|
|
|
|
|
volumePluginMgr,
|
|
|
|
|
kubeletPodsDir)
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
podName := util.GetUniquePodName(pod)
|
|
|
|
|
generatedVolumeName, err := dsw.AddPodToVolume(
|
|
|
|
|
podName, pod, volumeSpec, volumeSpec.Name(), "" /* volumeGidValue */)
|
|
|
|
@@ -709,11 +757,53 @@ func Test_Run_Positive_VolumeUnmapControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
// Enable BlockVolume feature gate
|
|
|
|
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.BlockVolume, true)()
|
|
|
|
|
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
Namespace: "ns",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
ClaimRef: &v1.ObjectReference{Namespace: "ns", Name: "pvc-volume-name"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
gcepvc := &v1.PersistentVolumeClaim{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "pvc-001", Name: "pvc-volume-name", Namespace: "ns"},
|
|
|
|
|
Spec: v1.PersistentVolumeClaimSpec{
|
|
|
|
|
VolumeName: "volume-name",
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
Status: v1.PersistentVolumeClaimStatus{
|
|
|
|
|
Phase: v1.ClaimBound,
|
|
|
|
|
Capacity: gcepv.Spec.Capacity,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
volumePluginMgr, fakePlugin := volumetesting.GetTestVolumePluginMgr(t)
|
|
|
|
|
dsw := cache.NewDesiredStateOfWorld(volumePluginMgr)
|
|
|
|
|
asw := cache.NewActualStateOfWorld(nodeName, volumePluginMgr)
|
|
|
|
|
kubeClient := createTestClient()
|
|
|
|
|
kubeClient := createtestClientWithPVPVC(gcepv, gcepvc, v1.AttachedVolume{
|
|
|
|
|
Name: "fake-plugin/fake-device1",
|
|
|
|
|
DevicePath: "/fake/path",
|
|
|
|
|
})
|
|
|
|
|
fakeRecorder := &record.FakeRecorder{}
|
|
|
|
|
fakeHandler := volumetesting.NewBlockVolumePathHandler()
|
|
|
|
|
oex := operationexecutor.NewOperationExecutor(operationexecutor.NewOperationGenerator(
|
|
|
|
@@ -736,31 +826,7 @@ func Test_Run_Positive_VolumeUnmapControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
&mount.FakeHostUtil{},
|
|
|
|
|
volumePluginMgr,
|
|
|
|
|
kubeletPodsDir)
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pod1",
|
|
|
|
|
UID: "pod1uid",
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PodSpec{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode := v1.PersistentVolumeBlock
|
|
|
|
|
gcepv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{UID: "001", Name: "volume-name"},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
Capacity: v1.ResourceList{v1.ResourceName(v1.ResourceStorage): resource.MustParse("10G")},
|
|
|
|
|
PersistentVolumeSource: v1.PersistentVolumeSource{GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{PDName: "fake-device1"}},
|
|
|
|
|
AccessModes: []v1.PersistentVolumeAccessMode{
|
|
|
|
|
v1.ReadWriteOnce,
|
|
|
|
|
v1.ReadOnlyMany,
|
|
|
|
|
},
|
|
|
|
|
VolumeMode: &mode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volumeSpec := &volume.Spec{
|
|
|
|
|
PersistentVolume: gcepv,
|
|
|
|
|
}
|
|
|
|
|
podName := util.GetUniquePodName(pod)
|
|
|
|
|
generatedVolumeName, err := dsw.AddPodToVolume(
|
|
|
|
|
podName, pod, volumeSpec, volumeSpec.Name(), "" /* volumeGidValue */)
|
|
|
|
@@ -948,8 +1014,25 @@ func Test_GenerateUnmapDeviceFunc_Plugin_Not_Found(t *testing.T) {
|
|
|
|
|
// Verifies volume's fsResizeRequired flag is cleared later.
|
|
|
|
|
func Test_Run_Positive_VolumeFSResizeControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ExpandInUsePersistentVolumes, true)()
|
|
|
|
|
blockMode := v1.PersistentVolumeBlock
|
|
|
|
|
fsMode := v1.PersistentVolumeFilesystem
|
|
|
|
|
|
|
|
|
|
fs := v1.PersistentVolumeFilesystem
|
|
|
|
|
var tests = []struct {
|
|
|
|
|
name string
|
|
|
|
|
volumeMode *v1.PersistentVolumeMode
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "expand-fs-volume",
|
|
|
|
|
volumeMode: &fsMode,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "expand-raw-block",
|
|
|
|
|
volumeMode: &blockMode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
|
pv := &v1.PersistentVolume{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
|
|
|
Name: "pv",
|
|
|
|
@@ -957,7 +1040,7 @@ func Test_Run_Positive_VolumeFSResizeControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PersistentVolumeSpec{
|
|
|
|
|
ClaimRef: &v1.ObjectReference{Name: "pvc"},
|
|
|
|
|
VolumeMode: &fs,
|
|
|
|
|
VolumeMode: tc.volumeMode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
pvc := &v1.PersistentVolumeClaim{
|
|
|
|
@@ -967,7 +1050,7 @@ func Test_Run_Positive_VolumeFSResizeControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
Spec: v1.PersistentVolumeClaimSpec{
|
|
|
|
|
VolumeName: "pv",
|
|
|
|
|
VolumeMode: &fs,
|
|
|
|
|
VolumeMode: tc.volumeMode,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
pod := &v1.Pod{
|
|
|
|
@@ -1056,6 +1139,8 @@ func Test_Run_Positive_VolumeFSResizeControllerAttachEnabled(t *testing.T) {
|
|
|
|
|
if waitErr != nil {
|
|
|
|
|
t.Fatal("Volume resize should succeeded")
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func waitForMount(
|
|
|
|
@@ -1138,19 +1223,21 @@ func runReconciler(reconciler Reconciler) {
|
|
|
|
|
go reconciler.Run(wait.NeverStop)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func createtestClientWithPVPVC(pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim) *fake.Clientset {
|
|
|
|
|
func createtestClientWithPVPVC(pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim, attachedVolumes ...v1.AttachedVolume) *fake.Clientset {
|
|
|
|
|
fakeClient := &fake.Clientset{}
|
|
|
|
|
if len(attachedVolumes) == 0 {
|
|
|
|
|
attachedVolumes = append(attachedVolumes, v1.AttachedVolume{
|
|
|
|
|
Name: "fake-plugin/pv",
|
|
|
|
|
DevicePath: "fake/path",
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
fakeClient.AddReactor("get", "nodes",
|
|
|
|
|
func(action core.Action) (bool, runtime.Object, error) {
|
|
|
|
|
return true, &v1.Node{
|
|
|
|
|
ObjectMeta: metav1.ObjectMeta{Name: string(nodeName)},
|
|
|
|
|
Status: v1.NodeStatus{
|
|
|
|
|
VolumesAttached: []v1.AttachedVolume{
|
|
|
|
|
{
|
|
|
|
|
Name: "fake-plugin/pv",
|
|
|
|
|
DevicePath: "fake/path",
|
|
|
|
|
VolumesAttached: attachedVolumes,
|
|
|
|
|
},
|
|
|
|
|
}},
|
|
|
|
|
}, nil
|
|
|
|
|
})
|
|
|
|
|
fakeClient.AddReactor("get", "persistentvolumeclaims", func(action core.Action) (bool, runtime.Object, error) {
|
|
|
|
|