-
Notifications
You must be signed in to change notification settings - Fork 31
/
container_builder.go
66 lines (53 loc) · 1.5 KB
/
container_builder.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
package v1alpha1
import corev1 "k8s.io/api/core/v1"
// +kubebuilder:skipversion
type containerBuilder corev1.Container
func (b containerBuilder) init(req getContainerReq) containerBuilder {
b.Env = req.env
b.Image = req.runnerImage
b.ImagePullPolicy = req.imagePullPolicy
b.Lifecycle = req.lifecycle
b.Name = CtrMain
b.Resources = standardResources
b.SecurityContext = req.securityContext
b.VolumeMounts = []corev1.VolumeMount{req.volumeMount}
return b
}
func (b containerBuilder) args(args ...string) containerBuilder {
b.Args = args
return b
}
func (b containerBuilder) image(x string) containerBuilder {
b.Image = x
return b
}
func (b containerBuilder) command(x ...string) containerBuilder {
b.Command = x
return b
}
func (b containerBuilder) appendEnv(x ...corev1.EnvVar) containerBuilder {
b.Env = append(b.Env, x...)
return b
}
func (b containerBuilder) workingDir(x string) containerBuilder {
b.WorkingDir = x
return b
}
func (b containerBuilder) appendVolumeMounts(x ...corev1.VolumeMount) containerBuilder {
b.VolumeMounts = append(b.VolumeMounts, x...)
return b
}
func (b containerBuilder) resources(x corev1.ResourceRequirements) containerBuilder {
b.Resources = x
return b
}
func (b containerBuilder) enablePrometheus() containerBuilder {
return b.port(8080)
}
func (b containerBuilder) port(n int32) containerBuilder {
b.Ports = append(b.Ports, corev1.ContainerPort{ContainerPort: n})
return b
}
func (b containerBuilder) build() corev1.Container {
return corev1.Container(b)
}