/
volume.go
78 lines (68 loc) · 1.38 KB
/
volume.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
@Version : 1.0
@Author : steven.wong
@Email : 'wangxk1991@gamil.com'
@Time : 2024/03/22 18:09:53
Desc :
*/
package kube
import (
"context"
v1 "k8s.io/api/core/v1"
)
type Volume struct {
*v1.Volume
ctx context.Context
}
func NewVolume(ctx context.Context) *Volume {
if ctx == nil {
ctx = context.TODO()
}
return &Volume{
Volume: &v1.Volume{},
ctx: ctx,
}
}
func (v *Volume) Metadata(name string) *Volume {
v.Name = name
return v
}
func (v *Volume) Secret(secretName string, items []v1.KeyToPath, mode int32) *Volume {
v.VolumeSource = v1.VolumeSource{
Secret: &v1.SecretVolumeSource{
SecretName: secretName,
Items: items,
DefaultMode: &mode,
},
}
return v
}
func (v *Volume) ConfigMap(configMapName string, items []v1.KeyToPath, mode int32) *Volume {
v.VolumeSource = v1.VolumeSource{
ConfigMap: &v1.ConfigMapVolumeSource{
LocalObjectReference: v1.LocalObjectReference{
Name: configMapName,
},
Items: items,
DefaultMode: &mode,
},
}
return v
}
func (v *Volume) EmptyDir(medium string) *Volume {
v.VolumeSource = v1.VolumeSource{
EmptyDir: &v1.EmptyDirVolumeSource{
Medium: v1.StorageMedium(medium),
},
}
return v
}
func (v *Volume) HostPath(path string, t v1.HostPathType) *Volume {
v.VolumeSource = v1.VolumeSource{
HostPath: &v1.HostPathVolumeSource{
Path: path,
Type: &t,
},
}
return v
}