mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
e2e: MakePod() should support block and inline volumes
This commit is contained in:
parent
43a32c14f5
commit
6a645592fc
@ -154,15 +154,7 @@ func MakePod(ns string, nodeSelector map[string]string, pvclaims []*v1.Persisten
|
|||||||
RestartPolicy: v1.RestartPolicyOnFailure,
|
RestartPolicy: v1.RestartPolicyOnFailure,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
var volumeMounts = make([]v1.VolumeMount, len(pvclaims))
|
setVolumes(&podSpec.Spec, pvclaims, nil /*inline volume sources*/, false /*PVCs readonly*/)
|
||||||
var volumes = make([]v1.Volume, len(pvclaims))
|
|
||||||
for index, pvclaim := range pvclaims {
|
|
||||||
volumename := fmt.Sprintf("volume%v", index+1)
|
|
||||||
volumeMounts[index] = v1.VolumeMount{Name: volumename, MountPath: "/mnt/" + volumename}
|
|
||||||
volumes[index] = v1.Volume{Name: volumename, VolumeSource: v1.VolumeSource{PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{ClaimName: pvclaim.Name, ReadOnly: false}}}
|
|
||||||
}
|
|
||||||
podSpec.Spec.Containers[0].VolumeMounts = volumeMounts
|
|
||||||
podSpec.Spec.Volumes = volumes
|
|
||||||
if nodeSelector != nil {
|
if nodeSelector != nil {
|
||||||
podSpec.Spec.NodeSelector = nodeSelector
|
podSpec.Spec.NodeSelector = nodeSelector
|
||||||
}
|
}
|
||||||
@ -223,33 +215,42 @@ func MakePodSpec(podConfig *Config) *v1.PodSpec {
|
|||||||
podSpec.SecurityContext.FSGroupChangePolicy = podConfig.PodFSGroupChangePolicy
|
podSpec.SecurityContext.FSGroupChangePolicy = podConfig.PodFSGroupChangePolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setVolumes(podSpec, podConfig.PVCs, podConfig.InlineVolumeSources, podConfig.PVCsReadOnly)
|
||||||
|
SetNodeSelection(podSpec, podConfig.NodeSelection)
|
||||||
|
return podSpec
|
||||||
|
}
|
||||||
|
|
||||||
|
func setVolumes(podSpec *v1.PodSpec, pvcs []*v1.PersistentVolumeClaim, inlineVolumeSources []*v1.VolumeSource, pvcsReadOnly bool) {
|
||||||
var volumeMounts = make([]v1.VolumeMount, 0)
|
var volumeMounts = make([]v1.VolumeMount, 0)
|
||||||
var volumeDevices = make([]v1.VolumeDevice, 0)
|
var volumeDevices = make([]v1.VolumeDevice, 0)
|
||||||
var volumes = make([]v1.Volume, len(podConfig.PVCs)+len(podConfig.InlineVolumeSources))
|
var volumes = make([]v1.Volume, len(pvcs)+len(inlineVolumeSources))
|
||||||
volumeIndex := 0
|
volumeIndex := 0
|
||||||
for _, pvclaim := range podConfig.PVCs {
|
for _, pvclaim := range pvcs {
|
||||||
volumename := fmt.Sprintf("volume%v", volumeIndex+1)
|
volumename := fmt.Sprintf("volume%v", volumeIndex+1)
|
||||||
if pvclaim.Spec.VolumeMode != nil && *pvclaim.Spec.VolumeMode == v1.PersistentVolumeBlock {
|
if pvclaim.Spec.VolumeMode != nil && *pvclaim.Spec.VolumeMode == v1.PersistentVolumeBlock {
|
||||||
volumeDevices = append(volumeDevices, v1.VolumeDevice{Name: volumename, DevicePath: "/mnt/" + volumename})
|
volumeDevices = append(volumeDevices, v1.VolumeDevice{Name: volumename, DevicePath: "/mnt/" + volumename})
|
||||||
} else {
|
} else {
|
||||||
volumeMounts = append(volumeMounts, v1.VolumeMount{Name: volumename, MountPath: "/mnt/" + volumename})
|
volumeMounts = append(volumeMounts, v1.VolumeMount{Name: volumename, MountPath: "/mnt/" + volumename})
|
||||||
}
|
}
|
||||||
|
volumes[volumeIndex] = v1.Volume{
|
||||||
volumes[volumeIndex] = v1.Volume{Name: volumename, VolumeSource: v1.VolumeSource{PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{ClaimName: pvclaim.Name, ReadOnly: podConfig.PVCsReadOnly}}}
|
Name: volumename,
|
||||||
|
VolumeSource: v1.VolumeSource{
|
||||||
|
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||||
|
ClaimName: pvclaim.Name,
|
||||||
|
ReadOnly: pvcsReadOnly,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
volumeIndex++
|
volumeIndex++
|
||||||
}
|
}
|
||||||
for _, src := range podConfig.InlineVolumeSources {
|
for _, src := range inlineVolumeSources {
|
||||||
volumename := fmt.Sprintf("volume%v", volumeIndex+1)
|
volumename := fmt.Sprintf("volume%v", volumeIndex+1)
|
||||||
// In-line volumes can be only filesystem, not block.
|
// In-line volumes can be only filesystem, not block.
|
||||||
volumeMounts = append(volumeMounts, v1.VolumeMount{Name: volumename, MountPath: "/mnt/" + volumename})
|
volumeMounts = append(volumeMounts, v1.VolumeMount{Name: volumename, MountPath: "/mnt/" + volumename})
|
||||||
volumes[volumeIndex] = v1.Volume{Name: volumename, VolumeSource: *src}
|
volumes[volumeIndex] = v1.Volume{Name: volumename, VolumeSource: *src}
|
||||||
volumeIndex++
|
volumeIndex++
|
||||||
}
|
}
|
||||||
|
|
||||||
podSpec.Containers[0].VolumeMounts = volumeMounts
|
podSpec.Containers[0].VolumeMounts = volumeMounts
|
||||||
podSpec.Containers[0].VolumeDevices = volumeDevices
|
podSpec.Containers[0].VolumeDevices = volumeDevices
|
||||||
podSpec.Volumes = volumes
|
podSpec.Volumes = volumes
|
||||||
|
|
||||||
SetNodeSelection(podSpec, podConfig.NodeSelection)
|
|
||||||
return podSpec
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user