Skip to content

Commit ccb3ceb

Browse files
authored
Add emptyDir sizeLimit support for local dirs (#1993)
* Add emptyDir sizeLimit support Signed-off-by: Jacob Salway <[email protected]> * Bump appVersion and add sizeLimit example Signed-off-by: Jacob Salway <[email protected]> --------- Signed-off-by: Jacob Salway <[email protected]>
1 parent 4f26fe7 commit ccb3ceb

File tree

5 files changed

+64
-4
lines changed

5 files changed

+64
-4
lines changed

charts/spark-operator-chart/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
apiVersion: v2
22
name: spark-operator
33
description: A Helm chart for Spark on Kubernetes operator
4-
version: 1.2.11
5-
appVersion: v1beta2-1.4.3-3.5.0
4+
version: 1.2.12
5+
appVersion: v1beta2-1.4.4-3.5.0
66
keywords:
77
- spark
88
home: https://github.com/kubeflow/spark-operator

charts/spark-operator-chart/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# spark-operator
22

3-
![Version: 1.2.11](https://img.shields.io/badge/Version-1.2.11-informational?style=flat-square) ![AppVersion: v1beta2-1.4.3-3.5.0](https://img.shields.io/badge/AppVersion-v1beta2--1.4.3--3.5.0-informational?style=flat-square)
3+
![Version: 1.2.12](https://img.shields.io/badge/Version-1.2.12-informational?style=flat-square) ![AppVersion: v1beta2-1.4.4-3.5.0](https://img.shields.io/badge/AppVersion-v1beta2--1.4.4--3.5.0-informational?style=flat-square)
44

55
A Helm chart for Spark on Kubernetes operator
66

docs/user-guide.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ spec:
360360
persistentVolumeClaim:
361361
claimName: my-pvc
362362
- name: spark-work
363-
emptyDir: {}
363+
emptyDir:
364+
sizeLimit: 5Gi
364365
driver:
365366
volumeMounts:
366367
- name: spark-work

pkg/controller/sparkapplication/submission.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,9 @@ func buildLocalVolumeOptions(prefix string, volume v1.Volume, volumeMount v1.Vol
516516
}
517517
case volume.EmptyDir != nil:
518518
options = append(options, fmt.Sprintf(VolumeMountPathTemplate, "emptyDir", volume.Name, volumeMount.MountPath))
519+
if volume.EmptyDir.SizeLimit != nil {
520+
options = append(options, fmt.Sprintf(VolumeMountOptionTemplate, "emptyDir", volume.Name, "sizeLimit", volume.EmptyDir.SizeLimit.String()))
521+
}
519522
case volume.PersistentVolumeClaim != nil:
520523
options = append(options, fmt.Sprintf(VolumeMountPathTemplate, "persistentVolumeClaim", volume.Name, volumeMount.MountPath))
521524
options = append(options, fmt.Sprintf(VolumeMountOptionTemplate, "persistentVolumeClaim", volume.Name, "claimName", volume.PersistentVolumeClaim.ClaimName))

pkg/controller/sparkapplication/submission_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/stretchr/testify/assert"
3030

3131
corev1 "k8s.io/api/core/v1"
32+
"k8s.io/apimachinery/pkg/api/resource"
3233
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3334

3435
"github.com/kubeflow/spark-operator/pkg/apis/sparkoperator.k8s.io/v1beta2"
@@ -366,6 +367,61 @@ func TestAddLocalDir_Driver_Executor(t *testing.T) {
366367
assert.Equal(t, fmt.Sprintf(VolumeMountOptionPathTemplate, "executor", "hostPath", volumes[0].Name, "path", volumes[0].HostPath.Path), localDirOptions[3])
367368
}
368369

370+
func TestAddEmptyDir_Driver_Executor_WithSizeLimit(t *testing.T) {
371+
sizeLimit := resource.MustParse("5Gi")
372+
volumes := []corev1.Volume{
373+
{
374+
Name: "spark-local-dir-1",
375+
VolumeSource: corev1.VolumeSource{
376+
EmptyDir: &corev1.EmptyDirVolumeSource{
377+
SizeLimit: &sizeLimit,
378+
},
379+
},
380+
},
381+
}
382+
383+
volumeMounts := []corev1.VolumeMount{
384+
{
385+
Name: "spark-local-dir-1",
386+
MountPath: "/tmp/mnt-1",
387+
},
388+
}
389+
390+
app := &v1beta2.SparkApplication{
391+
ObjectMeta: metav1.ObjectMeta{
392+
Name: "spark-test",
393+
UID: "spark-test-1",
394+
},
395+
Spec: v1beta2.SparkApplicationSpec{
396+
Volumes: volumes,
397+
Driver: v1beta2.DriverSpec{
398+
SparkPodSpec: v1beta2.SparkPodSpec{
399+
VolumeMounts: volumeMounts,
400+
},
401+
},
402+
Executor: v1beta2.ExecutorSpec{
403+
SparkPodSpec: v1beta2.SparkPodSpec{
404+
VolumeMounts: volumeMounts,
405+
},
406+
},
407+
},
408+
}
409+
410+
localDirOptions, err := addLocalDirConfOptions(app)
411+
if err != nil {
412+
t.Fatal(err)
413+
}
414+
415+
assert.Equal(t, 0, len(app.Spec.Volumes))
416+
assert.Equal(t, 0, len(app.Spec.Driver.VolumeMounts))
417+
assert.Equal(t, 0, len(app.Spec.Executor.VolumeMounts))
418+
assert.Equal(t, 4, len(localDirOptions))
419+
assert.Equal(t, fmt.Sprintf(VolumeMountPathTemplate, "driver", "emptyDir", volumes[0].Name, volumeMounts[0].MountPath), localDirOptions[0])
420+
assert.Equal(t, fmt.Sprintf(VolumeMountOptionPathTemplate, "driver", "emptyDir", volumes[0].Name, "sizeLimit", volumes[0].EmptyDir.SizeLimit.String()), localDirOptions[1])
421+
assert.Equal(t, fmt.Sprintf(VolumeMountPathTemplate, "executor", "emptyDir", volumes[0].Name, volumeMounts[0].MountPath), localDirOptions[2])
422+
assert.Equal(t, fmt.Sprintf(VolumeMountOptionPathTemplate, "executor", "emptyDir", volumes[0].Name, "sizeLimit", volumes[0].EmptyDir.SizeLimit.String()), localDirOptions[3])
423+
}
424+
369425
func TestPopulateLabels_Driver_Executor(t *testing.T) {
370426
const (
371427
AppLabelKey = "app-label-key"

0 commit comments

Comments
 (0)